Update from https://crrev.com/303153

This updates from chromium https://crrev.com/303153 aka
f9567f85788355bf3da8df030cbc232421d00b7d with the following additional
changes:

Update skia_build.patch and cc_strip_video.patch with trivial changes.

Update gpu::CommandBuffer state serialization for upstream changes.

Update ui/compositor/layer for upstream cc::SurfaceLayer changes.

TBR=jam@chromium.org

Review URL: https://codereview.chromium.org/706203003
diff --git a/base/BUILD.gn b/base/BUILD.gn
index fdd4572..84beb15 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -858,7 +858,7 @@
     ]
 
     # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
-    cflags = [ "/wd4267" ]
+    #cflags = [ "/wd4267" ]
 
     libs = [
       "cfgmgr32.lib",
diff --git a/base/PRESUBMIT.py b/base/PRESUBMIT.py
index 4b366d9..46ab02e 100644
--- a/base/PRESUBMIT.py
+++ b/base/PRESUBMIT.py
@@ -14,6 +14,7 @@
   files = []
   for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
     if (f.LocalPath().startswith('base/') and
+        not "/ios/" in f.LocalPath() and
         not "/test/" in f.LocalPath() and
         not f.LocalPath().endswith('_unittest.mm') and
         not f.LocalPath().endswith('mac/sdk_forward_declarations.h')):
diff --git a/base/android/field_trial_list.cc b/base/android/field_trial_list.cc
index 13f3cc5..9cb38d2 100644
--- a/base/android/field_trial_list.cc
+++ b/base/android/field_trial_list.cc
@@ -22,6 +22,11 @@
       base::FieldTrialList::FindFullName(trial_name)).Release();
 }
 
+static jboolean TrialExists(JNIEnv* env, jclass clazz, jstring jtrial_name) {
+  std::string trial_name(ConvertJavaStringToUTF8(env, jtrial_name));
+  return base::FieldTrialList::TrialExists(trial_name);
+}
+
 namespace base {
 namespace android {
 
diff --git a/base/android/java/src/org/chromium/base/FieldTrialList.java b/base/android/java/src/org/chromium/base/FieldTrialList.java
index 6c1f31c..5fc9a1f 100644
--- a/base/android/java/src/org/chromium/base/FieldTrialList.java
+++ b/base/android/java/src/org/chromium/base/FieldTrialList.java
@@ -20,5 +20,14 @@
         return nativeFindFullName(trialName);
     }
 
+    /**
+     * @param trialName The name of the trial to get the group for.
+     * @return Whether the trial exists or not.
+     */
+    public static boolean trialExists(String trialName) {
+        return nativeTrialExists(trialName);
+    }
+
     private static native String nativeFindFullName(String trialName);
+    private static native boolean nativeTrialExists(String trialName);
 }
diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
index 97afbea..28c688d 100644
--- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
+++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
@@ -55,17 +55,17 @@
     private static boolean sIsUsingBrowserSharedRelros = false;
     private static boolean sLoadAtFixedAddressFailed = false;
 
-    // One-way switch becomes true if the device supports loading the Chromium
-    // library directly from the APK.
-    private static boolean sLibraryLoadFromApkSupported = false;
+    // One-way switch becomes true if the device supports memory mapping the
+    // APK file with executable permissions.
+    private static boolean sMapApkWithExecPermission = false;
 
     // One-way switch becomes true if the Chromium library was loaded from the
     // APK file directly.
     private static boolean sLibraryWasLoadedFromApk = false;
 
     // One-way switch becomes false if the Chromium library should be loaded
-    // directly from the APK file but it was not aligned.
-    private static boolean sLibraryWasAlignedInApk = true;
+    // directly from the APK file but it was compressed or not aligned.
+    private static boolean sLibraryIsMappableInApk = true;
 
     // One-way switch becomes true if the system library loading failed,
     // and the right native library was found and loaded by the hack.
@@ -176,12 +176,20 @@
 
                 if (useChromiumLinker) {
                     String apkFilePath = null;
+                    boolean useMapExecSupportFallback = false;
 
-                    // Check if the device supports loading a library directly from the APK file.
+                    // Check if the device supports memory mapping the APK file
+                    // with executable permissions.
                     if (context != null) {
                         apkFilePath = context.getApplicationInfo().sourceDir;
-                        sLibraryLoadFromApkSupported = Linker.checkLibraryLoadFromApkSupport(
-                                apkFilePath);
+                        sMapApkWithExecPermission = Linker.checkMapExecSupport(apkFilePath);
+                        if (!sMapApkWithExecPermission && Linker.isInZipFile()) {
+                            Log.w(TAG, "the no map executable support fallback will be used because"
+                                    + " memory mapping the APK file with executable permissions is"
+                                    + " not supported");
+                            Linker.enableNoMapExecSupportFallback();
+                            useMapExecSupportFallback = true;
+                        }
                     } else {
                         Log.w(TAG, "could not check load from APK support due to null context");
                     }
@@ -203,18 +211,22 @@
                         String libFilePath = System.mapLibraryName(library);
                         if (apkFilePath != null && Linker.isInZipFile()) {
                             // The library is in the APK file.
-                            if (!Linker.checkLibraryAlignedInApk(apkFilePath, libFilePath)) {
-                                sLibraryWasAlignedInApk = false;
+                            if (!Linker.checkLibraryIsMappableInApk(apkFilePath, libFilePath)) {
+                                sLibraryIsMappableInApk = false;
                             }
-                            if (!sLibraryLoadFromApkSupported || sLibraryWasAlignedInApk) {
-                                // Load directly from the APK (or use memory fallback, see
-                                // crazy_linker_elf_loader.cpp).
-                                Log.i(TAG, "Loading " + library + " directly from within "
-                                        + apkFilePath);
+                            if (sLibraryIsMappableInApk || useMapExecSupportFallback) {
+                                // Load directly from the APK (or use the no map executable
+                                // support fallback, see crazy_linker_elf_loader.cpp).
                                 zipFilePath = apkFilePath;
+                                Log.i(TAG, "Loading " + library + " "
+                                        + (useMapExecSupportFallback
+                                                ? "using no map executable support fallback"
+                                                : "directly")
+                                        + " from within " + apkFilePath);
                             } else {
-                                // Fallback.
-                                Log.i(TAG, "Loading " + library + " using fallback from within "
+                                // Unpack library fallback.
+                                Log.i(TAG, "Loading " + library
+                                        + " using unpack library fallback from within "
                                         + apkFilePath);
                                 libFilePath = LibraryLoaderHelper.buildFallbackLibrary(
                                         context, library);
@@ -299,10 +311,10 @@
     // Load a native shared library with the Chromium linker. If the zip file
     // path is not null, the library is loaded directly from the zip file.
     private static void loadLibrary(@Nullable String zipFilePath, String libFilePath) {
+        Linker.loadLibrary(zipFilePath, libFilePath);
         if (zipFilePath != null) {
             sLibraryWasLoadedFromApk = true;
         }
-        Linker.loadLibrary(zipFilePath, libFilePath);
     }
 
     // The WebView requires the Command Line to be switched over before
@@ -380,11 +392,13 @@
         assert Linker.isUsed();
 
         if (sLibraryWasLoadedFromApk) {
-            return LibraryLoadFromApkStatusCodes.SUCCESSFUL;
+            return sMapApkWithExecPermission
+                    ? LibraryLoadFromApkStatusCodes.SUCCESSFUL
+                    : LibraryLoadFromApkStatusCodes.USED_NO_MAP_EXEC_SUPPORT_FALLBACK;
         }
 
-        if (!sLibraryWasAlignedInApk) {
-            return LibraryLoadFromApkStatusCodes.NOT_ALIGNED;
+        if (!sLibraryIsMappableInApk) {
+            return LibraryLoadFromApkStatusCodes.USED_UNPACK_LIBRARY_FALLBACK;
         }
 
         if (context == null) {
@@ -392,7 +406,7 @@
             return LibraryLoadFromApkStatusCodes.UNKNOWN;
         }
 
-        return Linker.checkLibraryLoadFromApkSupport(context.getApplicationInfo().sourceDir)
+        return sMapApkWithExecPermission
                 ? LibraryLoadFromApkStatusCodes.SUPPORTED
                 : LibraryLoadFromApkStatusCodes.NOT_SUPPORTED;
     }
diff --git a/base/android/java/src/org/chromium/base/library_loader/Linker.java b/base/android/java/src/org/chromium/base/library_loader/Linker.java
index 67e5f83..d58d1fc 100644
--- a/base/android/java/src/org/chromium/base/library_loader/Linker.java
+++ b/base/android/java/src/org/chromium/base/library_loader/Linker.java
@@ -798,6 +798,19 @@
     }
 
     /**
+     * Enable the fallback due to lack of support for mapping the APK file with
+     * executable permission (see crbug.com/398425).
+     */
+    public static void enableNoMapExecSupportFallback() {
+        synchronized (Linker.class) {
+            ensureInitializedLocked();
+
+            if (DEBUG) Log.i(TAG, "Enabling no map executable support fallback");
+            nativeEnableNoMapExecSupportFallback();
+        }
+    }
+
+    /**
      * Determine whether a library is the linker library. Also deal with the
      * component build that adds a .cr suffix to the name.
      */
@@ -812,46 +825,50 @@
      * @return the library path.
      */
     public static String getLibraryFilePathInZipFile(String library) throws FileNotFoundException {
-        String path = nativeGetLibraryFilePathInZipFile(library);
-        if (path.equals("")) {
-            throw new FileNotFoundException(
-                    "Failed to retrieve path in zip file for library " + library);
+        synchronized (Linker.class) {
+            ensureInitializedLocked();
+
+            String path = nativeGetLibraryFilePathInZipFile(library);
+            if (path.equals("")) {
+                throw new FileNotFoundException(
+                        "Failed to retrieve path in zip file for library " + library);
+            }
+            return path;
         }
-        return path;
     }
 
     /**
-     * Check whether the device supports loading a library directly from the APK file.
+     * Check whether the device supports mapping the APK file with executable permission.
      *
      * @param apkFile Filename of the APK.
      * @return true if supported.
      */
-    public static boolean checkLibraryLoadFromApkSupport(String apkFile) {
+    public static boolean checkMapExecSupport(String apkFile) {
         assert apkFile != null;
         synchronized (Linker.class) {
             ensureInitializedLocked();
 
-            if (DEBUG) Log.i(TAG, "checkLibraryLoadFromApkSupported: " + apkFile);
-            boolean supported = nativeCheckLibraryLoadFromApkSupport(apkFile);
-            if (DEBUG) Log.i(TAG, "Loading a library directly from the APK file "
+            if (DEBUG) Log.i(TAG, "checkMapExecSupport: " + apkFile);
+            boolean supported = nativeCheckMapExecSupport(apkFile);
+            if (DEBUG) Log.i(TAG, "Mapping the APK file with executable permission "
                     + (supported ? "" : "NOT ") + "supported");
             return supported;
         }
     }
 
     /**
-     * Check whether a library is page aligned in the APK file.
+     * Check whether a library is page aligned and uncompressed in the APK file.
      *
      * @param apkFile Filename of the APK.
      * @param library The library's base name.
-     * @return true if page aligned.
+     * @return true if page aligned and uncompressed.
      */
-    public static boolean checkLibraryAlignedInApk(String apkFile, String library) {
+    public static boolean checkLibraryIsMappableInApk(String apkFile, String library) {
         synchronized (Linker.class) {
             ensureInitializedLocked();
 
-            if (DEBUG) Log.i(TAG, "checkLibraryAlignedInApk: " + apkFile + ", " + library);
-            boolean aligned = nativeCheckLibraryAlignedInApk(apkFile, library);
+            if (DEBUG) Log.i(TAG, "checkLibraryIsMappableInApk: " + apkFile + ", " + library);
+            boolean aligned = nativeCheckLibraryIsMappableInApk(apkFile, library);
             if (DEBUG) Log.i(TAG, library + " is " + (aligned ? "" : "NOT ")
                     + "page aligned in " + apkFile);
             return aligned;
@@ -909,6 +926,12 @@
                                                              LibInfo libInfo);
 
     /**
+     * Native method used to enable the fallback due to lack of support for
+     * mapping the APK file with executable permission.
+     */
+    private static native void nativeEnableNoMapExecSupportFallback();
+
+    /**
      * Native method used to create a shared RELRO section.
      * If the library was already loaded at the same address using
      * nativeLoadLibrary(), this creates the RELRO for it. Otherwise,
@@ -964,22 +987,23 @@
     private static native String nativeGetLibraryFilePathInZipFile(String library);
 
     /**
-     * Native method which checks whether the device supports loading a library
-     * directly from the APK file.
+     * Native method which checks whether the device supports mapping the APK file
+     * with executable permission.
      *
      * @param apkFile Filename of the APK.
      * @return true if supported.
      */
-    private static native boolean nativeCheckLibraryLoadFromApkSupport(String apkFile);
+    private static native boolean nativeCheckMapExecSupport(String apkFile);
 
     /**
-     * Native method which checks whether a library is page aligned in the APK file.
+     * Native method which checks whether a library is page aligned and
+     * uncompressed in the APK file.
      *
      * @param apkFile Filename of the APK.
      * @param library The library's base name.
-     * @return true if page aligned.
+     * @return true if page aligned and uncompressed.
      */
-    private static native boolean nativeCheckLibraryAlignedInApk(String apkFile, String library);
+    private static native boolean nativeCheckLibraryIsMappableInApk(String apkFile, String library);
 
     /**
      * Record information for a given library.
diff --git a/base/android/library_loader/library_load_from_apk_status_codes.h b/base/android/library_loader/library_load_from_apk_status_codes.h
index 21f40bc..f99eebc 100644
--- a/base/android/library_loader/library_load_from_apk_status_codes.h
+++ b/base/android/library_loader/library_load_from_apk_status_codes.h
@@ -10,6 +10,8 @@
 
 namespace {
 
+// This enum must be kept in sync with the LibraryLoadFromApkStatus enum in
+// tools/metrics/histograms/histograms.xml.
 // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base.library_loader
 enum LibraryLoadFromApkStatusCodes {
   // The loader was unable to determine whether the functionality is supported.
@@ -24,11 +26,16 @@
   // The Chromium library was successfully loaded directly from the APK file.
   LIBRARY_LOAD_FROM_APK_STATUS_CODES_SUCCESSFUL = 3,
 
-  // The Chromium library was not page aligned in the APK file.
-  LIBRARY_LOAD_FROM_APK_STATUS_CODES_NOT_ALIGNED = 4,
+  // The Chromium library was successfully loaded using the unpack library
+  // fallback because it was compressed or not page aligned in the APK file.
+  LIBRARY_LOAD_FROM_APK_STATUS_CODES_USED_UNPACK_LIBRARY_FALLBACK = 4,
+
+  // The Chromium library was successfully loaded using the no map executable
+  // support fallback.
+  LIBRARY_LOAD_FROM_APK_STATUS_CODES_USED_NO_MAP_EXEC_SUPPORT_FALLBACK = 5,
 
   // End sentinel.
-  LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX = 5,
+  LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX = 6,
 };
 
 }  // namespace
diff --git a/base/android/linker/linker_jni.cc b/base/android/linker/linker_jni.cc
index 2b5a07d..b3ed651 100644
--- a/base/android/linker/linker_jni.cc
+++ b/base/android/linker/linker_jni.cc
@@ -386,6 +386,17 @@
       static_cast<size_t>(load_address), lib_info_obj, opener);
 }
 
+// Enable the fallback due to lack of support for mapping the APK file with
+// executable permission in the crazy linker.
+//
+// |env| is the current JNI environment handle and is ignored here.
+// |clazz| is the static class handle for org.chromium.base.Linker,
+// and is ignored here.
+void EnableNoMapExecSupportFallback(JNIEnv* env, jclass clazz) {
+  crazy_context_t* context = GetCrazyContext();
+  crazy_context_set_no_map_exec_support_fallback_enabled(context, true);
+}
+
 // Class holding the Java class and method ID for the Java side Linker
 // postCallbackOnMainThread method.
 struct JavaCallbackBindings_class {
@@ -598,15 +609,14 @@
   return env->NewStringUTF(buffer);
 }
 
-// Check whether the device supports loading a library directly from the APK
-// file.
+// Check whether the device supports mapping the APK file with executable
+// permission.
 //
 // |env| is the current JNI environment handle.
 // |clazz| is the static class handle which is not used here.
 // |apkfile_name| is the filename of the APK.
 // Returns true if supported.
-jboolean CheckLibraryLoadFromApkSupport(JNIEnv* env, jclass clazz,
-                                        jstring apkfile_name) {
+jboolean CheckMapExecSupport(JNIEnv* env, jclass clazz, jstring apkfile_name) {
   String apkfile_name_str(env, apkfile_name);
   const char* apkfile_name_c_str = apkfile_name_str.c_str();
 
@@ -635,27 +645,28 @@
   return status;
 }
 
-// Check whether a library is page aligned in the APK file.
+// Check whether a library is page aligned and uncompressed in the APK file.
 //
 // |env| is the current JNI environment handle.
 // |clazz| is the static class handle which is not used here.
 // |apkfile_name| is the filename of the APK.
 // |library_name| is the library base name.
-// Returns true if page aligned.
-jboolean CheckLibraryAlignedInApk(JNIEnv* env, jclass clazz,
-                                  jstring apkfile_name, jstring library_name) {
+// Returns true if page aligned and uncompressed.
+jboolean CheckLibraryIsMappableInApk(JNIEnv* env, jclass clazz,
+                                     jstring apkfile_name,
+                                     jstring library_name) {
   String apkfile_name_str(env, apkfile_name);
   const char* apkfile_name_c_str = apkfile_name_str.c_str();
   String library_name_str(env, library_name);
   const char* library_name_c_str = library_name_str.c_str();
 
-  LOG_INFO("%s: Checking if %s is page-aligned in %s\n", __FUNCTION__,
-           library_name_c_str, apkfile_name_c_str);
-  jboolean aligned = crazy_linker_check_library_aligned_in_zip_file(
+  LOG_INFO("%s: Checking if %s is page-aligned and uncompressed in %s\n",
+           __FUNCTION__, library_name_c_str, apkfile_name_c_str);
+  jboolean mappable = crazy_linker_check_library_is_mappable_in_zip_file(
       apkfile_name_c_str, library_name_c_str) == CRAZY_STATUS_SUCCESS;
   LOG_INFO("%s: %s\n", __FUNCTION__, aligned ? "Aligned" : "NOT aligned");
 
-  return aligned;
+  return mappable;
 }
 
 const JNINativeMethod kNativeMethods[] = {
@@ -676,6 +687,11 @@
      ")"
      "Z",
      reinterpret_cast<void*>(&LoadLibraryInZipFile)},
+    {"nativeEnableNoMapExecSupportFallback",
+     "("
+     ")"
+     "V",
+     reinterpret_cast<void*>(&EnableNoMapExecSupportFallback)},
     {"nativeRunCallbackOnUiThread",
      "("
      "J"
@@ -714,19 +730,19 @@
      ")"
      "Ljava/lang/String;",
      reinterpret_cast<void*>(&GetLibraryFilePathInZipFile)},
-    {"nativeCheckLibraryLoadFromApkSupport",
+    {"nativeCheckMapExecSupport",
      "("
      "Ljava/lang/String;"
      ")"
      "Z",
-     reinterpret_cast<void*>(&CheckLibraryLoadFromApkSupport)},
-    {"nativeCheckLibraryAlignedInApk",
+     reinterpret_cast<void*>(&CheckMapExecSupport)},
+    {"nativeCheckLibraryIsMappableInApk",
      "("
      "Ljava/lang/String;"
      "Ljava/lang/String;"
      ")"
      "Z",
-     reinterpret_cast<void*>(&CheckLibraryAlignedInApk)}, };
+     reinterpret_cast<void*>(&CheckLibraryIsMappableInApk)}, };
 
 }  // namespace
 
diff --git a/base/file_version_info_win.cc b/base/file_version_info_win.cc
index 46b0581..ca3e4b1 100644
--- a/base/file_version_info_win.cc
+++ b/base/file_version_info_win.cc
@@ -9,7 +9,6 @@
 #include "base/file_version_info.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
-#include "base/path_service.h"
 #include "base/threading/thread_restrictions.h"
 
 using base::FilePath;
diff --git a/base/files/file_util_posix.cc b/base/files/file_util_posix.cc
index d86d9bc..b8c0eeb 100644
--- a/base/files/file_util_posix.cc
+++ b/base/files/file_util_posix.cc
@@ -59,7 +59,7 @@
 
 namespace base {
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 namespace {
 
 #if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL)
@@ -348,7 +348,7 @@
 
   return success;
 }
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
 bool PathExists(const FilePath& path) {
   ThreadRestrictions::AssertIOAllowed();
@@ -360,7 +360,7 @@
   return access(path.value().c_str(), F_OK) == 0;
 }
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 bool PathIsWritable(const FilePath& path) {
   ThreadRestrictions::AssertIOAllowed();
   return access(path.value().c_str(), W_OK) == 0;
@@ -373,7 +373,7 @@
     return S_ISDIR(file_info.st_mode);
   return false;
 }
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
 bool ReadFromFD(int fd, char* buffer, size_t bytes) {
   size_t total_read = 0;
@@ -387,7 +387,7 @@
   return total_read == bytes;
 }
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 bool CreateSymbolicLink(const FilePath& target_path,
                         const FilePath& symlink_path) {
   DCHECK(!symlink_path.empty());
@@ -928,5 +928,5 @@
 
 }  // namespace internal
 
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 }  // namespace base
diff --git a/base/linux_util.cc b/base/linux_util.cc
index 29e1980..d6cd504 100644
--- a/base/linux_util.cc
+++ b/base/linux_util.cc
@@ -18,7 +18,6 @@
 #include "base/files/file_util.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
-#include "base/path_service.h"
 #include "base/process/launch.h"
 #include "base/strings/string_util.h"
 #include "base/synchronization/lock.h"
diff --git a/base/memory/singleton_unittest.cc b/base/memory/singleton_unittest.cc
index 41bd75c..0e9ecdc 100644
--- a/base/memory/singleton_unittest.cc
+++ b/base/memory/singleton_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "base/at_exit.h"
 #include "base/memory/singleton.h"
-#include "base/path_service.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc
index f1d0d3b..01402d0 100644
--- a/base/message_loop/message_loop.cc
+++ b/base/message_loop/message_loop.cc
@@ -100,7 +100,7 @@
 
 #if defined(OS_IOS)
 typedef MessagePumpIOSForIO MessagePumpForIO;
-#elif defined(OS_NACL) && !defined(__native_client_nonsfi__)
+#elif defined(OS_NACL_SFI)
 typedef MessagePumpDefault MessagePumpForIO;
 #elif defined(OS_POSIX)
 typedef MessagePumpLibevent MessagePumpForIO;
@@ -676,7 +676,7 @@
 //------------------------------------------------------------------------------
 // MessageLoopForIO
 
-#if !defined(OS_NACL) || defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_SFI)
 void MessageLoopForIO::AddIOObserver(
     MessageLoopForIO::IOObserver* io_observer) {
   ToPumpIO(pump_.get())->AddIOObserver(io_observer);
@@ -714,6 +714,6 @@
 }
 #endif
 
-#endif  // !defined(OS_NACL) || defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_SFI)
 
 }  // namespace base
diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h
index b781711..47df69a 100644
--- a/base/message_loop/message_loop.h
+++ b/base/message_loop/message_loop.h
@@ -596,7 +596,7 @@
     return loop && loop->type() == MessageLoop::TYPE_IO;
   }
 
-#if !defined(OS_NACL) || defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_SFI)
 
 #if defined(OS_WIN)
   typedef MessagePumpForIO::IOHandler IOHandler;
@@ -642,7 +642,7 @@
                            FileDescriptorWatcher *controller,
                            Watcher *delegate);
 #endif  // defined(OS_IOS) || defined(OS_POSIX)
-#endif  // !defined(OS_NACL) || defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_SFI)
 };
 
 // Do not add any member variables to MessageLoopForIO!  This is important b/c
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
index c82f33d..7efca7a 100644
--- a/base/metrics/field_trial.cc
+++ b/base/metrics/field_trial.cc
@@ -67,6 +67,7 @@
 bool FieldTrial::enable_benchmarking_ = false;
 
 const char FieldTrialList::kPersistentStringSeparator('/');
+const char FieldTrialList::kActivationMarker('*');
 int FieldTrialList::kNoExpirationYear = 0;
 
 //------------------------------------------------------------------------------
@@ -421,7 +422,18 @@
       return false;
     if (group_name_end == trials_string.npos)
       group_name_end = trials_string.length();
-    std::string name(trials_string, next_item, name_end - next_item);
+
+    // Verify if the trial should be activated or not.
+    std::string name;
+    bool force_activation = false;
+    if (trials_string[next_item] == kActivationMarker) {
+      // Name cannot be only the indicator.
+      if (name_end - next_item == 1)
+        return false;
+      next_item++;
+      force_activation = true;
+    }
+    name.append(trials_string, next_item, name_end - next_item);
     std::string group_name(trials_string, name_end + 1,
                            group_name_end - name_end - 1);
     next_item = group_name_end + 1;
@@ -432,7 +444,7 @@
     FieldTrial* trial = CreateFieldTrial(name, group_name);
     if (!trial)
       return false;
-    if (mode == ACTIVATE_TRIALS) {
+    if (mode == ACTIVATE_TRIALS || force_activation) {
       // Call |group()| to mark the trial as "used" and notify observers, if
       // any. This is useful to ensure that field trials created in child
       // processes are properly reported in crash reports.
diff --git a/base/metrics/field_trial.h b/base/metrics/field_trial.h
index 25ee0c1..e2e5439 100644
--- a/base/metrics/field_trial.h
+++ b/base/metrics/field_trial.h
@@ -291,7 +291,8 @@
 class BASE_EXPORT FieldTrialList {
  public:
   // Specifies whether field trials should be activated (marked as "used"), when
-  // created using |CreateTrialsFromString()|.
+  // created using |CreateTrialsFromString()|. Has no effect on trials that are
+  // prefixed with |kActivationMarker|, which will always be activated."
   enum FieldTrialActivationMode {
     DONT_ACTIVATE_TRIALS,
     ACTIVATE_TRIALS,
@@ -302,6 +303,10 @@
   // second process to mimic our state (i.e., provide the same group name).
   static const char kPersistentStringSeparator;  // Currently a slash.
 
+  // Define a marker character to be used as a prefix to a trial name on the
+  // command line which forces its activation.
+  static const char kActivationMarker;  // Currently an asterisk.
+
   // Year that is guaranteed to not be expired when instantiating a field trial
   // via |FactoryGetFieldTrial()|.  Set to two years from the build date.
   static int kNoExpirationYear;
@@ -412,9 +417,10 @@
   // used in a non-browser process, to carry randomly selected state in a
   // browser process into this non-browser process, but could also be invoked
   // through a command line argument to the browser process. The created field
-  // trials are marked as "used" for the purposes of active trial reporting if
-  // |mode| is ACTIVATE_TRIALS. Trial names in |ignored_trial_names| are ignored
-  // when parsing |prior_trials|.
+  // trials are all marked as "used" for the purposes of active trial reporting
+  // if |mode| is ACTIVATE_TRIALS, otherwise each trial will be marked as "used"
+  // if it is prefixed with |kActivationMarker|. Trial names in
+  // |ignored_trial_names| are ignored when parsing |prior_trials|.
   static bool CreateTrialsFromString(
       const std::string& prior_trials,
       FieldTrialActivationMode mode,
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
index 1ed3f89..ce95c2a 100644
--- a/base/metrics/field_trial_unittest.cc
+++ b/base/metrics/field_trial_unittest.cc
@@ -428,6 +428,12 @@
   EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
       "noname, only group/", FieldTrialList::DONT_ACTIVATE_TRIALS,
       std::set<std::string>()));
+  EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
+      "/emptyname", FieldTrialList::DONT_ACTIVATE_TRIALS,
+      std::set<std::string>()));
+  EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
+      "*/emptyname", FieldTrialList::DONT_ACTIVATE_TRIALS,
+      std::set<std::string>()));
 }
 
 TEST_F(FieldTrialTest, DuplicateRestore) {
@@ -490,6 +496,23 @@
   EXPECT_EQ("zyx", active_groups[1].group_name);
 }
 
+TEST_F(FieldTrialTest, CreateTrialsFromStringForceActivation) {
+  ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
+  ASSERT_FALSE(FieldTrialList::TrialExists("def"));
+  ASSERT_FALSE(FieldTrialList::TrialExists("Xyz"));
+  ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
+      "*Abc/cba/def/fed/*Xyz/zyx/", FieldTrialList::DONT_ACTIVATE_TRIALS,
+      std::set<std::string>()));
+
+  FieldTrial::ActiveGroups active_groups;
+  FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
+  ASSERT_EQ(2U, active_groups.size());
+  EXPECT_EQ("Abc", active_groups[0].trial_name);
+  EXPECT_EQ("cba", active_groups[0].group_name);
+  EXPECT_EQ("Xyz", active_groups[1].trial_name);
+  EXPECT_EQ("zyx", active_groups[1].group_name);
+}
+
 TEST_F(FieldTrialTest, CreateTrialsFromStringActiveObserver) {
   ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
 
diff --git a/base/posix/unix_domain_socket_linux.cc b/base/posix/unix_domain_socket_linux.cc
index 20a5944..203285b 100644
--- a/base/posix/unix_domain_socket_linux.cc
+++ b/base/posix/unix_domain_socket_linux.cc
@@ -17,13 +17,13 @@
 #include "base/posix/eintr_wrapper.h"
 #include "base/stl_util.h"
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 #include <sys/uio.h>
 #endif
 
 const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 // Creates a connected pair of UNIX-domain SOCK_SEQPACKET sockets, and passes
 // ownership of the newly allocated file descriptors to |one| and |two|.
 // Returns true on success.
@@ -41,7 +41,7 @@
   const int enable = 1;
   return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0;
 }
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
 // static
 bool UnixDomainSocket::SendMsg(int fd,
@@ -113,7 +113,7 @@
 
   const size_t kControlBufferSize =
       CMSG_SPACE(sizeof(int) * kMaxFileDescriptors)
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
       // The PNaCl toolchain for Non-SFI binary build does not support ucred.
       + CMSG_SPACE(sizeof(struct ucred))
 #endif
@@ -141,7 +141,7 @@
         wire_fds = reinterpret_cast<int*>(CMSG_DATA(cmsg));
         wire_fds_len = payload_len / sizeof(int);
       }
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
       // The PNaCl toolchain for Non-SFI binary build does not support
       // SCM_CREDENTIALS.
       if (cmsg->cmsg_level == SOL_SOCKET &&
@@ -154,16 +154,12 @@
     }
   }
 
-#if !defined(__native_client_nonsfi__)
-  // The PNaCl toolchain for Non-SFI binary build does not support
-  // MSG_TRUNC or MSG_CTRUNC.
   if (msg.msg_flags & MSG_TRUNC || msg.msg_flags & MSG_CTRUNC) {
     for (unsigned i = 0; i < wire_fds_len; ++i)
       close(wire_fds[i]);
     errno = EMSGSIZE;
     return -1;
   }
-#endif
 
   if (wire_fds) {
     for (unsigned i = 0; i < wire_fds_len; ++i)
@@ -184,7 +180,7 @@
   return r;
 }
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 // static
 ssize_t UnixDomainSocket::SendRecvMsg(int fd,
                                       uint8_t* reply,
@@ -242,4 +238,4 @@
 
   return reply_len;
 }
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
diff --git a/base/posix/unix_domain_socket_linux.h b/base/posix/unix_domain_socket_linux.h
index 5281875..142cb14 100644
--- a/base/posix/unix_domain_socket_linux.h
+++ b/base/posix/unix_domain_socket_linux.h
@@ -21,12 +21,12 @@
   // Maximum number of file descriptors that can be read by RecvMsg().
   static const size_t kMaxFileDescriptors;
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
   // Use to enable receiving process IDs in RecvMsgWithPid.  Should be called on
   // the receiving socket (i.e., the socket passed to RecvMsgWithPid). Returns
   // true if successful.
   static bool EnableReceiveProcessId(int fd);
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
   // Use sendmsg to write the given msg and include a vector of file
   // descriptors. Returns true if successful.
@@ -52,7 +52,7 @@
                                 ScopedVector<base::ScopedFD>* fds,
                                 base::ProcessId* pid);
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
   // Perform a sendmsg/recvmsg pair.
   //   1. This process creates a UNIX SEQPACKET socketpair. Using
   //      connection-oriented sockets (SEQPACKET or STREAM) is critical here,
@@ -85,7 +85,7 @@
                                       int recvmsg_flags,
                                       int* result_fd,
                                       const Pickle& request);
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
  private:
   // Similar to RecvMsg, but allows to specify |flags| for recvmsg(2).
   static ssize_t RecvMsgWithFlags(int fd,
diff --git a/base/process/kill_posix.cc b/base/process/kill_posix.cc
index b02453c..d17e990 100644
--- a/base/process/kill_posix.cc
+++ b/base/process/kill_posix.cc
@@ -22,7 +22,7 @@
 
 namespace {
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 bool WaitpidWithTimeout(ProcessHandle handle,
                         int* status,
                         base::TimeDelta wait) {
@@ -84,7 +84,7 @@
 
   return ret_pid > 0;
 }
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
 TerminationStatus GetTerminationStatusImpl(ProcessHandle handle,
                                            bool can_block,
@@ -132,7 +132,7 @@
 
 }  // namespace
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 // Attempts to kill the process identified by the given process
 // entry structure.  Ignores specified exit_code; posix can't force that.
 // Returns true if this is successful, false otherwise.
@@ -194,7 +194,7 @@
     DPLOG(ERROR) << "Unable to terminate process group " << process_group_id;
   return result;
 }
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
 TerminationStatus GetTerminationStatus(ProcessHandle handle, int* exit_code) {
   return GetTerminationStatusImpl(handle, false /* can_block */, exit_code);
@@ -210,7 +210,7 @@
   return GetTerminationStatusImpl(handle, true /* can_block */, exit_code);
 }
 
-#if !defined(__native_client_nonsfi__)
+#if !defined(OS_NACL_NONSFI)
 bool WaitForExitCode(ProcessHandle handle, int* exit_code) {
   int status;
   if (HANDLE_EINTR(waitpid(handle, &status, 0)) == -1) {
@@ -483,6 +483,6 @@
 }
 
 #endif  // !defined(OS_MACOSX)
-#endif  // !defined(__native_client_nonsfi__)
+#endif  // !defined(OS_NACL_NONSFI)
 
 }  // namespace base
diff --git a/base/profiler/scoped_tracker.h b/base/profiler/scoped_tracker.h
index a188557..f83654e 100644
--- a/base/profiler/scoped_tracker.h
+++ b/base/profiler/scoped_tracker.h
@@ -19,6 +19,21 @@
 // ScopedTracker instruments a region within the code if the instrumentation is
 // enabled. It can be used, for example, to find out if a source of jankiness is
 // inside the instrumented code region.
+// Details:
+// 1. This class creates a task (like ones created by PostTask calls or IPC
+// message handlers). This task can be seen in chrome://profiler and is sent as
+// a part of profiler data to the UMA server. See profiler_event.proto.
+// 2. That task's lifetime is same as the lifetime of the ScopedTracker
+// instance.
+// 3. The execution time associated with the task is the wallclock time between
+// its constructor and destructor, minus wallclock times of directly nested
+// tasks.
+// 4. Task creation that this class utilizes is highly optimized.
+// 5. The class doesn't create a task unless this was enabled for the current
+// process. Search for ScopedTracker::Enable for the current list of processes
+// and channels where it's activated.
+// 6. The class is designed for temporarily instrumenting code to find
+// performance problems, after which the instrumentation must be removed.
 class BASE_EXPORT ScopedTracker {
  public:
   ScopedTracker(const Location& location);
diff --git a/base/sys_info.cc b/base/sys_info.cc
index 0b3b317..cb93480 100644
--- a/base/sys_info.cc
+++ b/base/sys_info.cc
@@ -44,6 +44,12 @@
 }
 #endif
 
+#if !defined(OS_MACOSX) || defined(OS_IOS)
+std::string SysInfo::HardwareModelName() {
+  return std::string();
+}
+#endif
+
 // static
 int64 SysInfo::Uptime() {
   // This code relies on an implementation detail of TimeTicks::Now() - that
diff --git a/base/sys_info.h b/base/sys_info.h
index d24acdf..660343d 100644
--- a/base/sys_info.h
+++ b/base/sys_info.h
@@ -51,6 +51,12 @@
   // Returns system uptime in milliseconds.
   static int64 Uptime();
 
+  // Returns a descriptive string for the current machine model or an empty
+  // string if machime model is unknown or an error occured.
+  // e.g. MacPro1,1 on Mac.
+  // Only implemented on OS X, will return an empty string on other platforms.
+  static std::string HardwareModelName();
+
   // Returns the name of the host operating system.
   static std::string OperatingSystemName();
 
diff --git a/base/sys_info_mac.cc b/base/sys_info_mac.cc
index 57e1f83..18df624 100644
--- a/base/sys_info_mac.cc
+++ b/base/sys_info_mac.cc
@@ -85,4 +85,12 @@
   return std::string();
 }
 
+std::string SysInfo::HardwareModelName() {
+  char model[256];
+  size_t len = sizeof(model);
+  if (sysctlbyname("hw.model", model, &len, NULL, 0) == 0)
+    return std::string(model, 0, len);
+  return std::string();
+}
+
 }  // namespace base
diff --git a/base/sys_info_unittest.cc b/base/sys_info_unittest.cc
index 29409ee..15ae098 100644
--- a/base/sys_info_unittest.cc
+++ b/base/sys_info_unittest.cc
@@ -65,6 +65,13 @@
   EXPECT_GT(up_time_2, up_time_1);
 }
 
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+TEST_F(SysInfoTest, HardwareModelName) {
+  std::string hardware_model = base::SysInfo::HardwareModelName();
+  EXPECT_FALSE(hardware_model.empty());
+}
+#endif
+
 #if defined(OS_CHROMEOS)
 
 TEST_F(SysInfoTest, GoogleChromeOSVersionNumbers) {
diff --git a/base/timer/timer.cc b/base/timer/timer.cc
index 1916ccc..11f73ca 100644
--- a/base/timer/timer.cc
+++ b/base/timer/timer.cc
@@ -93,6 +93,12 @@
   return delay_;
 }
 
+void Timer::SetTaskRunner(scoped_refptr<SingleThreadTaskRunner> task_runner) {
+  // Do not allow changing the task runner once something has been scheduled.
+  DCHECK_EQ(thread_id_, 0);
+  task_runner_.swap(task_runner);
+}
+
 void Timer::Start(const tracked_objects::Location& posted_from,
                   TimeDelta delay,
                   const base::Closure& user_task) {
@@ -146,12 +152,12 @@
   is_running_ = true;
   scheduled_task_ = new BaseTimerTaskInternal(this);
   if (delay > TimeDelta::FromMicroseconds(0)) {
-    ThreadTaskRunnerHandle::Get()->PostDelayedTask(posted_from_,
+    GetTaskRunner()->PostDelayedTask(posted_from_,
         base::Bind(&BaseTimerTaskInternal::Run, base::Owned(scheduled_task_)),
         delay);
     scheduled_run_time_ = desired_run_time_ = TimeTicks::Now() + delay;
   } else {
-    ThreadTaskRunnerHandle::Get()->PostTask(posted_from_,
+    GetTaskRunner()->PostTask(posted_from_,
         base::Bind(&BaseTimerTaskInternal::Run, base::Owned(scheduled_task_)));
     scheduled_run_time_ = desired_run_time_ = TimeTicks();
   }
@@ -161,6 +167,10 @@
     thread_id_ = static_cast<int>(PlatformThread::CurrentId());
 }
 
+scoped_refptr<SingleThreadTaskRunner> Timer::GetTaskRunner() {
+  return task_runner_.get() ? task_runner_ : ThreadTaskRunnerHandle::Get();
+}
+
 void Timer::AbandonScheduledTask() {
   DCHECK(thread_id_ == 0 ||
          thread_id_ == static_cast<int>(PlatformThread::CurrentId()));
diff --git a/base/timer/timer.h b/base/timer/timer.h
index 4ef2f45..7e2c1d4 100644
--- a/base/timer/timer.h
+++ b/base/timer/timer.h
@@ -60,6 +60,7 @@
 namespace base {
 
 class BaseTimerTaskInternal;
+class SingleThreadTaskRunner;
 
 //-----------------------------------------------------------------------------
 // This class wraps MessageLoop::PostDelayedTask to manage delayed and repeating
@@ -87,6 +88,10 @@
   // Returns the current delay for this timer.
   virtual TimeDelta GetCurrentDelay() const;
 
+  // Set the task runner on which the task should be scheduled. This method can
+  // only be called before any tasks have been scheduled.
+  virtual void SetTaskRunner(scoped_refptr<SingleThreadTaskRunner> task_runner);
+
   // Start the timer to run at the given |delay| from now. If the timer is
   // already running, it will be replaced to call the given |user_task|.
   virtual void Start(const tracked_objects::Location& posted_from,
@@ -128,6 +133,11 @@
   // and desired_run_time_ are reset to Now() + delay.
   void PostNewScheduledTask(TimeDelta delay);
 
+  // Returns the task runner on which the task should be scheduled. If the
+  // corresponding task_runner_ field is null, the task runner for the current
+  // thread is returned.
+  scoped_refptr<SingleThreadTaskRunner> GetTaskRunner();
+
   // Disable scheduled_task_ and abandon it so that it no longer refers back to
   // this object.
   void AbandonScheduledTask();
@@ -145,6 +155,10 @@
   // RunScheduledTask() at scheduled_run_time_.
   BaseTimerTaskInternal* scheduled_task_;
 
+  // The task runner on which the task should be scheduled. If it is null, the
+  // task runner for the current thread should be used.
+  scoped_refptr<SingleThreadTaskRunner> task_runner_;
+
   // Location in user code.
   tracked_objects::Location posted_from_;
   // Delay requested by user.
diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc
index 0fb2b45..1cbccd1 100644
--- a/base/timer/timer_unittest.cc
+++ b/base/timer/timer_unittest.cc
@@ -4,10 +4,12 @@
 
 #include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
+#include "base/test/test_simple_task_runner.h"
 #include "base/timer/timer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using base::TimeDelta;
+using base::SingleThreadTaskRunner;
 
 namespace {
 
@@ -26,20 +28,32 @@
  public:
   explicit OneShotTimerTester(bool* did_run, unsigned milliseconds = 10)
       : did_run_(did_run),
-        delay_ms_(milliseconds) {
+        delay_ms_(milliseconds),
+        quit_message_loop_(true) {
   }
+
   void Start() {
     timer_.Start(FROM_HERE, TimeDelta::FromMilliseconds(delay_ms_), this,
                  &OneShotTimerTester::Run);
   }
+
+  void SetTaskRunner(scoped_refptr<SingleThreadTaskRunner> task_runner) {
+    quit_message_loop_ = false;
+    timer_.SetTaskRunner(task_runner);
+  }
+
  private:
   void Run() {
     *did_run_ = true;
-    base::MessageLoop::current()->QuitWhenIdle();
+    if (quit_message_loop_) {
+      base::MessageLoop::current()->QuitWhenIdle();
+    }
   }
+
   bool* did_run_;
   base::OneShotTimer<OneShotTimerTester> timer_;
   const unsigned delay_ms_;
+  bool quit_message_loop_;
 };
 
 class OneShotSelfDeletingTimerTester {
@@ -48,16 +62,19 @@
       did_run_(did_run),
       timer_(new base::OneShotTimer<OneShotSelfDeletingTimerTester>()) {
   }
+
   void Start() {
     timer_->Start(FROM_HERE, TimeDelta::FromMilliseconds(10), this,
                   &OneShotSelfDeletingTimerTester::Run);
   }
+
  private:
   void Run() {
     *did_run_ = true;
     timer_.reset();
     base::MessageLoop::current()->QuitWhenIdle();
   }
+
   bool* did_run_;
   scoped_ptr<base::OneShotTimer<OneShotSelfDeletingTimerTester> > timer_;
 };
@@ -71,6 +88,7 @@
   void Start() {
     timer_.Start(FROM_HERE, delay_, this, &RepeatingTimerTester::Run);
   }
+
  private:
   void Run() {
     if (--counter_ == 0) {
@@ -79,6 +97,7 @@
       base::MessageLoop::current()->QuitWhenIdle();
     }
   }
+
   bool* did_run_;
   int counter_;
   TimeDelta delay_;
@@ -310,6 +329,20 @@
   }
 }
 
+TEST(TimerTest, OneShotTimer_CustomTaskRunner) {
+  scoped_refptr<base::TestSimpleTaskRunner> task_runner =
+      new base::TestSimpleTaskRunner();
+
+  bool did_run = false;
+  OneShotTimerTester f(&did_run);
+  f.SetTaskRunner(task_runner);
+  f.Start();
+
+  EXPECT_FALSE(did_run);
+  task_runner->RunUntilIdle();
+  EXPECT_TRUE(did_run);
+}
+
 TEST(TimerTest, RepeatingTimer) {
   for (int i = 0; i < kNumTestingMessageLoops; i++) {
     RunTest_RepeatingTimer(testing_message_loops[i],
diff --git a/base/tracked_objects.cc b/base/tracked_objects.cc
index 4fe8851..c69fada 100644
--- a/base/tracked_objects.cc
+++ b/base/tracked_objects.cc
@@ -54,18 +54,27 @@
 // problem with its presence).
 static const bool kAllowAlternateTimeSourceHandling = true;
 
+// Possible states of the profiler timing enabledness.
+enum {
+  UNDEFINED_TIMING,
+  ENABLED_TIMING,
+  DISABLED_TIMING,
+};
+
+// State of the profiler timing enabledness.
+base::subtle::Atomic32 g_profiler_timing_enabled = UNDEFINED_TIMING;
+
+// Returns whether profiler timing is enabled. The default is true, but this may
+// be overridden by a command-line flag. Some platforms may programmatically set
+// this command-line flag to the "off" value if it's not specified.
+// This in turn can be overridden by explicitly calling
+// ThreadData::EnableProfilerTiming, say, based on a field trial.
 inline bool IsProfilerTimingEnabled() {
-  enum {
-    UNDEFINED_TIMING,
-    ENABLED_TIMING,
-    DISABLED_TIMING,
-  };
-  static base::subtle::Atomic32 timing_enabled = UNDEFINED_TIMING;
-  // Reading |timing_enabled| is done without barrier because multiple
-  // initialization is not an issue while the barrier can be relatively costly
-  // given that this method is sometimes called in a tight loop.
+  // Reading |g_profiler_timing_enabled| is done without barrier because
+  // multiple initialization is not an issue while the barrier can be relatively
+  // costly given that this method is sometimes called in a tight loop.
   base::subtle::Atomic32 current_timing_enabled =
-      base::subtle::NoBarrier_Load(&timing_enabled);
+      base::subtle::NoBarrier_Load(&g_profiler_timing_enabled);
   if (current_timing_enabled == UNDEFINED_TIMING) {
     if (!CommandLine::InitializedForCurrentProcess())
       return true;
@@ -75,7 +84,8 @@
          switches::kProfilerTimingDisabledValue)
             ? DISABLED_TIMING
             : ENABLED_TIMING;
-    base::subtle::NoBarrier_Store(&timing_enabled, current_timing_enabled);
+    base::subtle::NoBarrier_Store(&g_profiler_timing_enabled,
+                                  current_timing_enabled);
   }
   return current_timing_enabled == ENABLED_TIMING;
 }
@@ -775,6 +785,11 @@
 }
 
 // static
+void ThreadData::EnableProfilerTiming() {
+  base::subtle::NoBarrier_Store(&g_profiler_timing_enabled, ENABLED_TIMING);
+}
+
+// static
 TrackedTime ThreadData::Now() {
   if (kAllowAlternateTimeSourceHandling && now_function_)
     return TrackedTime::FromMilliseconds((*now_function_)());
diff --git a/base/tracked_objects.h b/base/tracked_objects.h
index 222f581..50bea47 100644
--- a/base/tracked_objects.h
+++ b/base/tracked_objects.h
@@ -466,6 +466,9 @@
   // relationships can be (optionally) calculated.
   static void PrepareForStartOfRun(const Births* parent);
 
+  // Enables profiler timing.
+  static void EnableProfilerTiming();
+
   // Provide a time function that does nothing (runs fast) when we don't have
   // the profiler enabled.  It will generally be optimized away when it is
   // ifdef'ed to be small enough (allowing the profiler to be "compiled out" of
diff --git a/base/win/win_util.cc b/base/win/win_util.cc
index 21b78fa..f46242d 100644
--- a/base/win/win_util.cc
+++ b/base/win/win_util.cc
@@ -119,12 +119,14 @@
 
 static bool g_crash_on_process_detach = false;
 
-void GetNonClientMetrics(NONCLIENTMETRICS* metrics) {
+void GetNonClientMetrics(NONCLIENTMETRICS_XP* metrics) {
   DCHECK(metrics);
   metrics->cbSize = sizeof(*metrics);
-  const bool success =
-      !!SystemParametersInfo(
-          SPI_GETNONCLIENTMETRICS, metrics->cbSize, metrics, 0);
+  const bool success = !!SystemParametersInfo(
+      SPI_GETNONCLIENTMETRICS,
+      metrics->cbSize,
+      reinterpret_cast<NONCLIENTMETRICS*>(metrics),
+      0);
   DCHECK(success);
 }
 
diff --git a/base/win/win_util.h b/base/win/win_util.h
index 9439597..8513f62 100644
--- a/base/win/win_util.h
+++ b/base/win/win_util.h
@@ -33,10 +33,30 @@
 struct _tagpropertykey;
 typedef _tagpropertykey PROPERTYKEY;
 
+// This is the same as NONCLIENTMETRICS except that the
+// unused member |iPaddedBorderWidth| has been removed.
+struct NONCLIENTMETRICS_XP {
+    UINT    cbSize;
+    int     iBorderWidth;
+    int     iScrollWidth;
+    int     iScrollHeight;
+    int     iCaptionWidth;
+    int     iCaptionHeight;
+    LOGFONTW lfCaptionFont;
+    int     iSmCaptionWidth;
+    int     iSmCaptionHeight;
+    LOGFONTW lfSmCaptionFont;
+    int     iMenuWidth;
+    int     iMenuHeight;
+    LOGFONTW lfMenuFont;
+    LOGFONTW lfStatusFont;
+    LOGFONTW lfMessageFont;
+};
+
 namespace base {
 namespace win {
 
-BASE_EXPORT void GetNonClientMetrics(NONCLIENTMETRICS* metrics);
+BASE_EXPORT void GetNonClientMetrics(NONCLIENTMETRICS_XP* metrics);
 
 // Returns the string representing the current user sid.
 BASE_EXPORT bool GetUserSidString(std::wstring* user_sid);
diff --git a/build/all.gyp b/build/all.gyp
index b59c668..22f0d26 100644
--- a/build/all.gyp
+++ b/build/all.gyp
@@ -423,7 +423,7 @@
             '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
           ],
         }],
-        ['enable_printing!=0', {
+        ['enable_basic_printing==1 or enable_print_preview==1', {
           'dependencies': [
             '../printing/printing.gyp:printing_unittests',
           ],
diff --git a/build/android/provision_devices.py b/build/android/provision_devices.py
index 9962f0a..560d1d0 100755
--- a/build/android/provision_devices.py
+++ b/build/android/provision_devices.py
@@ -207,8 +207,8 @@
     # Device black list is reset by bb_device_status_check.py per build.
     device_blacklist.ExtendBlacklist([str(device)])
   except (device_errors.CommandFailedError):
-    logging.info('Failed to provision device %s. Adding to blacklist.',
-                 str(device))
+    logging.exception('Failed to provision device %s. Adding to blacklist.',
+                      str(device))
     device_blacklist.ExtendBlacklist([str(device)])
 
 
diff --git a/build/android/pylib/base/base_test_runner.py b/build/android/pylib/base/base_test_runner.py
index d857f59..1f76149 100644
--- a/build/android/pylib/base/base_test_runner.py
+++ b/build/android/pylib/base/base_test_runner.py
@@ -4,6 +4,10 @@
 
 """Base class for running tests on a single device."""
 
+# TODO(jbudorick) Deprecate and remove this class and all subclasses after
+# any relevant parts have been ported to the new environment + test instance
+# model.
+
 import logging
 import time
 
diff --git a/build/android/pylib/base/environment.py b/build/android/pylib/base/environment.py
new file mode 100644
index 0000000..3f49f41
--- /dev/null
+++ b/build/android/pylib/base/environment.py
@@ -0,0 +1,34 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+class Environment(object):
+  """An environment in which tests can be run.
+
+  This is expected to handle all logic that is applicable to an entire specific
+  environment but is independent of the test type.
+
+  Examples include:
+    - The local device environment, for running tests on devices attached to
+      the local machine.
+    - The local machine environment, for running tests directly on the local
+      machine.
+  """
+
+  def __init__(self):
+    pass
+
+  def SetUp(self):
+    raise NotImplementedError
+
+  def TearDown(self):
+    raise NotImplementedError
+
+  def __enter__(self):
+    self.SetUp()
+    return self
+
+  def __exit__(self, _exc_type, _exc_val, _exc_tb):
+    self.TearDown()
+
diff --git a/build/android/pylib/base/environment_factory.py b/build/android/pylib/base/environment_factory.py
new file mode 100644
index 0000000..ad2eafd
--- /dev/null
+++ b/build/android/pylib/base/environment_factory.py
@@ -0,0 +1,11 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+def CreateEnvironment(_command, _options, error_func):
+
+  # TODO(jbudorick) Add local device environment.
+  # TODO(jbudorick) Add local machine environment.
+  error_func('No environments currently supported.')
+
diff --git a/build/android/pylib/base/test_dispatcher.py b/build/android/pylib/base/test_dispatcher.py
index 677a908..7b00ccd 100644
--- a/build/android/pylib/base/test_dispatcher.py
+++ b/build/android/pylib/base/test_dispatcher.py
@@ -15,6 +15,9 @@
   collection until there are no tests left.
 """
 
+# TODO(jbudorick) Deprecate and remove this class after any relevant parts have
+# been ported to the new environment / test instance model.
+
 import logging
 import threading
 
diff --git a/build/android/pylib/base/test_instance.py b/build/android/pylib/base/test_instance.py
new file mode 100644
index 0000000..cdf678f
--- /dev/null
+++ b/build/android/pylib/base/test_instance.py
@@ -0,0 +1,35 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+class TestInstance(object):
+  """A type of test.
+
+  This is expected to handle all logic that is test-type specific but
+  independent of the environment or device.
+
+  Examples include:
+    - gtests
+    - instrumentation tests
+  """
+
+  def __init__(self):
+    pass
+
+  def TestType(self):
+    raise NotImplementedError
+
+  def SetUp(self):
+    raise NotImplementedError
+
+  def TearDown(self):
+    raise NotImplementedError
+
+  def __enter__(self):
+    self.SetUp()
+    return self
+
+  def __exit__(self, _exc_type, _exc_val, _exc_tb):
+    self.TearDown()
+
diff --git a/build/android/pylib/base/test_instance_factory.py b/build/android/pylib/base/test_instance_factory.py
new file mode 100644
index 0000000..fd74b96
--- /dev/null
+++ b/build/android/pylib/base/test_instance_factory.py
@@ -0,0 +1,11 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+def CreateTestInstance(_command, _options, error_func):
+
+  # TODO(jbudorick) Add gtest test instance.
+  # TODO(jbudorick) Add instrumentation test instance.
+  error_func('No test instances currently supported.')
+
diff --git a/build/android/pylib/base/test_run.py b/build/android/pylib/base/test_run.py
new file mode 100644
index 0000000..2c594fd
--- /dev/null
+++ b/build/android/pylib/base/test_run.py
@@ -0,0 +1,39 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+class TestRun(object):
+  """An execution of a particular test on a particular device.
+
+  This is expected to handle all logic that is specific to the combination of
+  environment and test type.
+
+  Examples include:
+    - local gtests
+    - local instrumentation tests
+  """
+
+  def __init__(self, env, test_instance):
+    self._env = env
+    self._test_instance = test_instance
+
+  def TestPackage(self):
+    raise NotImplementedError
+
+  def SetUp(self):
+    raise NotImplementedError
+
+  def RunTest(self):
+    raise NotImplementedError
+
+  def TearDown(self):
+    raise NotImplementedError
+
+  def __enter__(self):
+    self.SetUp()
+    return self
+
+  def __exit__(self, exc_type, exc_val, exc_tb):
+    self.TearDown()
+
diff --git a/build/android/pylib/base/test_run_factory.py b/build/android/pylib/base/test_run_factory.py
new file mode 100644
index 0000000..50a9690
--- /dev/null
+++ b/build/android/pylib/base/test_run_factory.py
@@ -0,0 +1,10 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+def CreateTestRun(_options, _env, _test_instance, error_func):
+
+  # TODO(jbudorick) Add local gtest test runs
+  # TODO(jbudorick) Add local instrumentation test runs.
+  error_func('No test runs are currently supported.')
+
diff --git a/build/android/pylib/constants.py b/build/android/pylib/constants.py
index 95b1868..cef098f 100644
--- a/build/android/pylib/constants.py
+++ b/build/android/pylib/constants.py
@@ -198,6 +198,9 @@
 # },
 }
 
+LOCAL_MACHINE_TESTS = ['junit', 'python']
+VALID_ENVIRONMENTS = ['local']
+
 
 def GetBuildType():
   try:
diff --git a/build/android/pylib/device/device_utils.py b/build/android/pylib/device/device_utils.py
index 2c50720..f4bce41 100644
--- a/build/android/pylib/device/device_utils.py
+++ b/build/android/pylib/device/device_utils.py
@@ -109,7 +109,11 @@
     Raises:
       CommandTimeoutError on timeout.
     """
-    return self.adb.GetState() == 'device'
+    try:
+      return self.adb.GetState() == 'device'
+    except device_errors.BaseError as exc:
+      logging.info('Failed to get state: %s', exc)
+      return False
 
   @decorators.WithTimeoutAndRetriesFromInstance()
   def HasRoot(self, timeout=None, retries=None):
@@ -126,15 +130,39 @@
       CommandTimeoutError on timeout.
       DeviceUnreachableError on missing device.
     """
-    return self._HasRootImpl()
-
-  def _HasRootImpl(self):
     try:
-      self._RunShellCommandImpl('ls /root', check_return=True)
+      self.RunShellCommand('ls /root', check_return=True)
       return True
     except device_errors.AdbShellCommandFailedError:
       return False
 
+  def NeedsSU(self, timeout=None, retries=None):
+    """Checks whether 'su' is needed to access protected resources.
+
+    Args:
+      timeout: timeout in seconds
+      retries: number of retries
+
+    Returns:
+      True if 'su' is available on the device and is needed to to access
+        protected resources; False otherwise if either 'su' is not available
+        (e.g. because the device has a user build), or not needed (because adbd
+        already has root privileges).
+
+    Raises:
+      CommandTimeoutError on timeout.
+      DeviceUnreachableError on missing device.
+    """
+    if 'needs_su' not in self._cache:
+      try:
+        self.RunShellCommand('su -c ls /root && ! ls /root', check_return=True,
+                             timeout=timeout, retries=retries)
+        self._cache['needs_su'] = True
+      except device_errors.AdbShellCommandFailedError:
+        self._cache['needs_su'] = False
+    return self._cache['needs_su']
+
+
   @decorators.WithTimeoutAndRetriesFromInstance()
   def EnableRoot(self, timeout=None, retries=None):
     """Restarts adbd with root privileges.
@@ -147,6 +175,8 @@
       CommandFailedError if root could not be enabled.
       CommandTimeoutError on timeout.
     """
+    if 'needs_su' in self._cache:
+      del self._cache['needs_su']
     if not self.old_interface.EnableAdbRoot():
       raise device_errors.CommandFailedError(
           'Could not enable root.', device=str(self))
@@ -191,9 +221,9 @@
     if 'external_storage' in self._cache:
       return self._cache['external_storage']
 
-    value = self._RunShellCommandImpl('echo $EXTERNAL_STORAGE',
-                                      single_line=True,
-                                      check_return=True)
+    value = self.RunShellCommand('echo $EXTERNAL_STORAGE',
+                                 single_line=True,
+                                 check_return=True)
     if not value:
       raise device_errors.CommandFailedError('$EXTERNAL_STORAGE is not set',
                                              str(self))
@@ -238,8 +268,12 @@
       DeviceUnreachableError if the device becomes unresponsive.
     """
     def sd_card_ready():
-      return self.RunShellCommand(['ls', self.GetExternalStoragePath()],
-                                    single_line=True, check_return=True)
+      try:
+        self.RunShellCommand(['test', '-d', self.GetExternalStoragePath()],
+                             check_return=True)
+        return True
+      except device_errors.AdbShellCommandFailedError:
+        return False
 
     def pm_ready():
       try:
@@ -389,11 +423,6 @@
       CommandTimeoutError on timeout.
       DeviceUnreachableError on missing device.
     """
-    return self._RunShellCommandImpl(cmd, check_return=check_return, cwd=cwd,
-        env=env, as_root=as_root, single_line=single_line, timeout=timeout)
-
-  def _RunShellCommandImpl(self, cmd, check_return=False, cwd=None, env=None,
-                           as_root=False, single_line=False, timeout=None):
     def env_quote(key, value):
       if not DeviceUtils._VALID_SHELL_VARIABLE.match(key):
         raise KeyError('Invalid shell variable name %r' % key)
@@ -402,7 +431,7 @@
 
     if not isinstance(cmd, basestring):
       cmd = ' '.join(cmd_helper.SingleQuote(s) for s in cmd)
-    if as_root and not self._HasRootImpl():
+    if as_root and self.NeedsSU():
       cmd = 'su -c %s' % cmd
     if env:
       env = ' '.join(env_quote(k, v) for k, v in env.iteritems())
@@ -413,9 +442,7 @@
       timeout = self._default_timeout
 
     try:
-      # TODO(perezju) still need to make sure that we call a version of
-      # adb.Shell without a timeout-and-retries wrapper.
-      output = self.adb.Shell(cmd, expect_rc=0, timeout=timeout, retries=0)
+      output = self.adb.Shell(cmd, expect_rc=0)
     except device_errors.AdbShellCommandFailedError as e:
       if check_return:
         raise
@@ -461,7 +488,7 @@
           'No process "%s"' % process_name, device=str(self))
 
     cmd = ['kill', '-%d' % signum] + pids.values()
-    self._RunShellCommandImpl(cmd, as_root=as_root, check_return=True)
+    self.RunShellCommand(cmd, as_root=as_root, check_return=True)
 
     if blocking:
       wait_period = 0.1
@@ -612,7 +639,7 @@
     files = []
     for h, d in host_device_tuples:
       if os.path.isdir(h):
-        self._RunShellCommandImpl(['mkdir', '-p', d], check_return=True)
+        self.RunShellCommand(['mkdir', '-p', d], check_return=True)
       files += self._GetChangedFilesImpl(h, d)
 
     if not files:
@@ -644,14 +671,14 @@
       self._PushChangedFilesIndividually(files)
     else:
       self._PushChangedFilesZipped(files)
-      self._RunShellCommandImpl(
+      self.RunShellCommand(
           ['chmod', '-R', '777'] + [d for _, d in host_device_tuples],
           as_root=True, check_return=True)
 
   def _GetChangedFilesImpl(self, host_path, device_path):
     real_host_path = os.path.realpath(host_path)
     try:
-      real_device_path = self._RunShellCommandImpl(
+      real_device_path = self.RunShellCommand(
           ['realpath', device_path], single_line=True, check_return=True)
     except device_errors.CommandFailedError:
       real_device_path = None
@@ -744,7 +771,7 @@
       zip_on_device = '%s/tmp.zip' % self._GetExternalStoragePathImpl()
       try:
         self.adb.Push(zip_file.name, zip_on_device)
-        self._RunShellCommandImpl(
+        self.RunShellCommand(
             ['unzip', zip_on_device],
             as_root=True,
             env={'PATH': '$PATH:%s' % install_commands.BIN_DIR},
@@ -753,7 +780,7 @@
         if zip_proc.is_alive():
           zip_proc.terminate()
         if self.IsOnline():
-          self._RunShellCommandImpl(['rm', zip_on_device], check_return=True)
+          self.RunShellCommand(['rm', zip_on_device], check_return=True)
 
   @staticmethod
   def _CreateDeviceZip(zip_path, host_device_tuples):
@@ -891,7 +918,7 @@
     """
     cmd = 'echo %s > %s' % (cmd_helper.SingleQuote(text),
                             cmd_helper.SingleQuote(device_path))
-    self._RunShellCommandImpl(cmd, as_root=as_root, check_return=True)
+    self.RunShellCommand(cmd, as_root=as_root, check_return=True)
 
   @decorators.WithTimeoutAndRetriesFromInstance()
   def Ls(self, device_path, timeout=None, retries=None):
@@ -1034,7 +1061,7 @@
 
   def _GetPidsImpl(self, process_name):
     procs_pids = {}
-    for line in self._RunShellCommandImpl('ps', check_return=True):
+    for line in self.RunShellCommand('ps', check_return=True):
       try:
         ps_data = line.split()
         if process_name in ps_data[-1]:
diff --git a/build/android/pylib/device/device_utils_test.py b/build/android/pylib/device/device_utils_test.py
index f23e21e..fa4ffaa 100755
--- a/build/android/pylib/device/device_utils_test.py
+++ b/build/android/pylib/device/device_utils_test.py
@@ -313,7 +313,7 @@
         or a _ShellError object to raise an AdbShellCommandFailedError.
     '''
     def mk_expected_call(cmd, return_value):
-      expected_args = Args(cmd, expect_rc=0, timeout=10, retries=0)
+      expected_args = Args(cmd, expect_rc=0)
       if isinstance(return_value, _ShellError):
         return_value = device_errors.AdbShellCommandFailedError(cmd,
             return_value.return_code, return_value.output, str(self.device))
@@ -348,6 +348,11 @@
     self.assertFalse(self.device.IsOnline())
     self.adb.GetState.assert_called_once_with()
 
+  def testIsOnline_error(self):
+    self.adb.GetState = mock.Mock(
+     side_effect=device_errors.CommandFailedError('falied'))
+    self.assertFalse(self.device.IsOnline())
+    self.adb.GetState.assert_called_once_with()
 
 class DeviceUtilsHasRootTest(DeviceUtilsNewImplTest):
 
@@ -440,7 +445,7 @@
     with self.assertShellCallSequence([
         # sc_card_ready
         ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-        ('ls /fake/storage/path', '/fake/storage/path\r\n'),
+        ('test -d /fake/storage/path', ''),
         # pm_ready
         ('pm path android', 'package:this.is.a.test.package\r\n'),
         # boot_completed
@@ -452,7 +457,7 @@
     with self.assertShellCallSequence([
         # sc_card_ready
         ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-        ('ls /fake/storage/path', '/fake/storage/path\r\n'),
+        ('test -d /fake/storage/path', ''),
         # pm_ready
         ('pm path android', 'package:this.is.a.test.package\r\n'),
         # boot_completed
@@ -474,11 +479,11 @@
       with self.assertShellCallSequence([
           # sc_card_ready
           ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-          ('ls /fake/storage/path', '\r\n'),
+          ('test -d /fake/storage/path', _ShellError()),
           # sc_card_ready
-          ('ls /fake/storage/path', '\r\n'),
+          ('test -d /fake/storage/path', _ShellError()),
           # sc_card_ready
-          ('ls /fake/storage/path', _CmdTimeout())]):
+          ('test -d /fake/storage/path', _CmdTimeout())]):
         with self.assertRaises(device_errors.CommandTimeoutError):
           self.device.WaitUntilFullyBooted(wifi=False)
 
@@ -487,7 +492,7 @@
       with self.assertShellCallSequence([
           # sc_card_ready
           ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-          ('ls /fake/storage/path', '/fake/storage/path\r\n'),
+          ('test -d /fake/storage/path', ''),
           # pm_ready
           ('pm path android', 'Error. Is package manager running?\r\n'),
           # pm_ready
@@ -502,7 +507,7 @@
       with self.assertShellCallSequence([
           # sc_card_ready
           ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-          ('ls /fake/storage/path', '/fake/storage/path\r\n'),
+          ('test -d /fake/storage/path', ''),
           # pm_ready
           ('pm path android', 'package:this.is.a.test.package\r\n'),
           # boot_completed
@@ -519,7 +524,7 @@
       with self.assertShellCallSequence([
           # sc_card_ready
           ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-          ('ls /fake/storage/path', '/fake/storage/path\r\n'),
+          ('test -d /fake/storage/path', ''),
           # pm_ready
           ('pm path android', 'package:this.is.a.test.package\r\n'),
           # boot_completed
@@ -549,7 +554,7 @@
     with self.assertShellCallSequence([
         # sc_card_ready
         ('echo $EXTERNAL_STORAGE', '/fake/storage/path\r\n'),
-        ('ls /fake/storage/path', '/fake/storage/path\r\n'),
+        ('test -d /fake/storage/path', ''),
         # pm_ready
         ('pm path android', 'package:this.is.a.test.package\r\n'),
         # boot_completed
@@ -685,13 +690,13 @@
 
   def testRunShellCommand_withSu(self):
     with self.assertShellCallSequence([
-        ('ls /root', _ShellError()),
+        ('su -c ls /root && ! ls /root', ''),
         ('su -c setprop service.adb.root 0', '')]):
       self.device.RunShellCommand('setprop service.adb.root 0', as_root=True)
 
   def testRunShellCommand_withRoot(self):
     with self.assertShellCallSequence([
-        ('ls /root', '\r\n'),
+        ('su -c ls /root && ! ls /root', _ShellError()),
         ('setprop service.adb.root 0', '')]):
       self.device.RunShellCommand('setprop service.adb.root 0', as_root=True)
 
@@ -789,7 +794,7 @@
         ('ps', 'USER   PID   PPID  VSIZE  RSS   WCHAN    PC       NAME\r\n'
                'u0_a1  1234  174   123456 54321 ffffffff 456789ab '
                'this.is.a.test.process\r\n'),
-        ('ls /root', _ShellError()),
+        ('su -c ls /root && ! ls /root', ''),
         ('su -c kill -9 1234', '')]):
       self.assertEquals(1,
           self.device.KillAll('this.is.a.test.process', as_root=True))
@@ -1090,7 +1095,7 @@
     self.device._GetExternalStoragePathImpl = mock.Mock(
         return_value='/test/device/external_dir')
     self.device.IsOnline = mock.Mock(return_value=True)
-    self.device._RunShellCommandImpl = mock.Mock()
+    self.device.RunShellCommand = mock.Mock()
     mock_zip_temp = mock.mock_open()
     mock_zip_temp.return_value.name = '/test/temp/file/tmp.zip'
     with mock.patch('multiprocessing.Process') as mock_zip_proc, (
@@ -1102,13 +1107,13 @@
         args=('/test/temp/file/tmp.zip', test_files))
     self.adb.Push.assert_called_once_with(
         '/test/temp/file/tmp.zip', '/test/device/external_dir/tmp.zip')
-    self.assertEqual(2, self.device._RunShellCommandImpl.call_count)
-    self.device._RunShellCommandImpl.assert_any_call(
+    self.assertEqual(2, self.device.RunShellCommand.call_count)
+    self.device.RunShellCommand.assert_any_call(
         ['unzip', '/test/device/external_dir/tmp.zip'],
         as_root=True,
         env={'PATH': '$PATH:/data/local/tmp/bin'},
         check_return=True)
-    self.device._RunShellCommandImpl.assert_any_call(
+    self.device.RunShellCommand.assert_any_call(
         ['rm', '/test/device/external_dir/tmp.zip'], check_return=True)
 
   def testPushChangedFilesZipped_multiple(self):
@@ -1118,7 +1123,7 @@
     self.device._GetExternalStoragePathImpl = mock.Mock(
         return_value='/test/device/external_dir')
     self.device.IsOnline = mock.Mock(return_value=True)
-    self.device._RunShellCommandImpl = mock.Mock()
+    self.device.RunShellCommand = mock.Mock()
     mock_zip_temp = mock.mock_open()
     mock_zip_temp.return_value.name = '/test/temp/file/tmp.zip'
     with mock.patch('multiprocessing.Process') as mock_zip_proc, (
@@ -1130,13 +1135,13 @@
         args=('/test/temp/file/tmp.zip', test_files))
     self.adb.Push.assert_called_once_with(
         '/test/temp/file/tmp.zip', '/test/device/external_dir/tmp.zip')
-    self.assertEqual(2, self.device._RunShellCommandImpl.call_count)
-    self.device._RunShellCommandImpl.assert_any_call(
+    self.assertEqual(2, self.device.RunShellCommand.call_count)
+    self.device.RunShellCommand.assert_any_call(
         ['unzip', '/test/device/external_dir/tmp.zip'],
         as_root=True,
         env={'PATH': '$PATH:/data/local/tmp/bin'},
         check_return=True)
-    self.device._RunShellCommandImpl.assert_any_call(
+    self.device.RunShellCommand.assert_any_call(
         ['rm', '/test/device/external_dir/tmp.zip'], check_return=True)
 
 
@@ -1378,7 +1383,7 @@
 
   def testWriteTextFileTest_asRoot(self):
     with self.assertShellCallSequence([
-        ('ls /root', _ShellError()),
+        ('su -c ls /root && ! ls /root', ''),
         ('su -c echo string > /test/file', '')]):
       self.device.WriteTextFile('/test/file', 'string', as_root=True)
 
diff --git a/build/android/pylib/gtest/setup.py b/build/android/pylib/gtest/setup.py
index d73d862..3206bda 100644
--- a/build/android/pylib/gtest/setup.py
+++ b/build/android/pylib/gtest/setup.py
@@ -143,11 +143,16 @@
   Returns:
     A list of all the tests in the test suite.
   """
+  class TestListResult(base_test_result.BaseTestResult):
+    def __init__(self):
+      super(TestListResult, self).__init__(
+          'gtest_list_tests', base_test_result.ResultType.PASS)
+      self.test_list = []
+
   def TestListerRunnerFactory(device, _shard_index):
     class TestListerRunner(test_runner.TestRunner):
       def RunTest(self, _test):
-        result = base_test_result.BaseTestResult(
-            'gtest_list_tests', base_test_result.ResultType.PASS)
+        result = TestListResult()
         self.test_package.Install(self.device)
         result.test_list = self.test_package.GetAllTests(self.device)
         results = base_test_result.TestRunResults()
diff --git a/build/android/pylib/instrumentation/test_runner.py b/build/android/pylib/instrumentation/test_runner.py
index ebd2c83..3bac503 100644
--- a/build/android/pylib/instrumentation/test_runner.py
+++ b/build/android/pylib/instrumentation/test_runner.py
@@ -185,6 +185,9 @@
     self._SetupIndividualTestTimeoutScale(test)
     self.tool.SetupEnvironment()
 
+    if self.flags and self._IsFreTest(test):
+      self.flags.RemoveFlags(['--disable-fre'])
+
     # Make sure the forwarder is still running.
     self._RestartHttpServerForwarderIfNecessary()
 
@@ -196,6 +199,18 @@
       self.coverage_host_file = os.path.join(
           self.coverage_dir, coverage_basename)
 
+  def _IsFreTest(self, test):
+    """Determines whether a test is a first run experience test.
+
+    Args:
+      test: The name of the test to be checked.
+
+    Returns:
+      Whether the feature being tested is FirstRunExperience.
+    """
+    freFeature = 'Feature:FirstRunExperience'
+    return freFeature in self.test_pkg.GetTestAnnotations(test)
+
   def _IsPerfTest(self, test):
     """Determines whether a test is a performance test.
 
@@ -238,6 +253,9 @@
 
     self.TearDownPerfMonitoring(test)
 
+    if self.flags and self._IsFreTest(test):
+      self.flags.AddFlags(['--disable-fre'])
+
     if self.coverage_dir:
       self.device.PullFile(
           self.coverage_device_file, self.coverage_host_file)
diff --git a/build/android/pylib/utils/device_temp_file.py b/build/android/pylib/utils/device_temp_file.py
new file mode 100644
index 0000000..2a9b451
--- /dev/null
+++ b/build/android/pylib/utils/device_temp_file.py
@@ -0,0 +1,45 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""A temp file that automatically gets pushed and deleted from a device."""
+
+# pylint: disable=W0622
+
+import random
+import time
+
+class DeviceTempFile(object):
+  def __init__(self, device, prefix='temp_file', suffix=''):
+    """Find an unused temporary file path in the devices external directory.
+
+    When this object is closed, the file will be deleted on the device.
+
+    Args:
+      device: An instance of DeviceUtils
+      prefix: The prefix of the name of the temp file.
+      suffix: The suffix of the name of the temp file.
+    """
+    self._device = device
+    while True:
+      i = random.randint(0, 1000000)
+      self.name = '%s/%s-%d-%010d%s' % (
+          self._device.GetExternalStoragePath(),
+          prefix, int(time.time()), i, suffix)
+      if not self._device.FileExists(self.name):
+        break
+    # Immediately create an empty file so that other temp files can't
+    # be given the same name.
+    # |as_root| must be set to False due to the implementation of |WriteFile|.
+    # Having |as_root| be True may cause infinite recursion.
+    self._device.WriteFile(self.name, '', as_root=False)
+
+  def close(self):
+    """Deletes the temporary file from the device."""
+    self._device.RunShellCommand(['rm', self.name])
+
+  def __enter__(self):
+    return self
+
+  def __exit__(self, type, value, traceback):
+    self.close()
diff --git a/build/android/pylib/utils/device_temp_file_test.py b/build/android/pylib/utils/device_temp_file_test.py
new file mode 100755
index 0000000..b0d23b1
--- /dev/null
+++ b/build/android/pylib/utils/device_temp_file_test.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""
+Unit tests for the contents of device_temp_file.py.
+"""
+
+import logging
+import os
+import sys
+import unittest
+
+from pylib import constants
+from pylib.utils import device_temp_file
+
+sys.path.append(os.path.join(
+    constants.DIR_SOURCE_ROOT, 'third_party', 'pymock'))
+import mock # pylint: disable=F0401
+
+class DeviceTempFileTest(unittest.TestCase):
+
+  def setUp(self):
+    self.device_utils = mock.MagicMock()
+
+  def testTempFileNameAlreadyExists(self):
+    self.device_utils.GetExternalStoragePath.return_value = '/sdcard'
+    self.device_utils.FileExists.side_effect = [True, True, True, False]
+
+    tmpfile = device_temp_file.DeviceTempFile(self.device_utils)
+    logging.debug('Temp file name: %s' % tmpfile.name)
+    self.assertEqual(self.device_utils.FileExists.call_count, 4)
+    self.device_utils.WriteFile.assert_called_with(tmpfile.name, '')
+
+  def testTempFileLifecycle(self):
+    self.device_utils.GetExternalStoragePath.return_value = '/sdcard'
+    self.device_utils.FileExists.return_value = False
+
+    with device_temp_file.DeviceTempFile(self.device_utils) as tmpfile:
+      filename = tmpfile.name
+      self.assertEqual(self.device_utils.WriteFile.call_count, 1)
+      self.assertNotEqual(self.device_utils.RunShellCommand.call_args,
+          mock.call(['rm', mock.ANY]))
+
+    self.assertEqual(self.device_utils.RunShellCommand.call_args,
+        mock.call(['rm', filename]))
+
+if __name__ == '__main__':
+  logging.getLogger().setLevel(logging.DEBUG)
+  unittest.main(verbosity=2)
diff --git a/build/android/setup.gyp b/build/android/setup.gyp
index 7dce19d..f10ab3e 100644
--- a/build/android/setup.gyp
+++ b/build/android/setup.gyp
@@ -12,13 +12,26 @@
           # <(SHARED_LIB_DIR)
           'target_name': 'copy_system_libraries',
           'type': 'none',
-          'copies': [
-            {
-              'destination': '<(SHARED_LIB_DIR)/',
-              'files': [
-                '<(android_stlport_libs_dir)/libstlport_shared.so',
+          'conditions': [
+            ['target_arch=="arm" and arm_thumb==1', {
+              'copies': [
+                {
+                  'destination': '<(SHARED_LIB_DIR)/',
+                  'files': [
+                    '<(android_stlport_libs_dir)/thumb/libstlport_shared.so',
+                  ],
+                },
               ],
-            },
+            }, {
+              'copies': [
+                {
+                  'destination': '<(SHARED_LIB_DIR)/',
+                  'files': [
+                    '<(android_stlport_libs_dir)/libstlport_shared.so',
+                  ],
+                },
+              ],
+            }],
           ],
         },
       ],
diff --git a/build/android/test_runner.py b/build/android/test_runner.py
index 1baebc1..2e39c3c 100755
--- a/build/android/test_runner.py
+++ b/build/android/test_runner.py
@@ -21,7 +21,10 @@
 from pylib import forwarder
 from pylib import ports
 from pylib.base import base_test_result
+from pylib.base import environment_factory
 from pylib.base import test_dispatcher
+from pylib.base import test_instance_factory
+from pylib.base import test_run_factory
 from pylib.gtest import gtest_config
 from pylib.gtest import setup as gtest_setup
 from pylib.gtest import test_options as gtest_test_options
@@ -45,9 +48,6 @@
 from pylib.utils import run_tests_helper
 
 
-HOST_TESTS = ['junit', 'python']
-
-
 def AddCommonOptions(option_parser):
   """Adds all common options to |option_parser|."""
 
@@ -78,15 +78,26 @@
                    dest='flakiness_dashboard_server',
                    help=('Address of the server that is hosting the '
                          'Chrome for Android flakiness dashboard.'))
+  group.add_option('--enable-platform-mode', action='store_true',
+                   help=('Run the test scripts in platform mode, which '
+                         'conceptually separates the test runner from the '
+                         '"device" (local or remote, real or emulated) on '
+                         'which the tests are running. [experimental]'))
+  group.add_option('-e', '--environment', default='local',
+                   help=('Test environment to run in. Must be one of: %s' %
+                         ', '.join(constants.VALID_ENVIRONMENTS)))
   option_parser.add_option_group(group)
 
 
-def ProcessCommonOptions(options):
+def ProcessCommonOptions(options, error_func):
   """Processes and handles all common options."""
   run_tests_helper.SetLogLevel(options.verbose_count)
   constants.SetBuildType(options.build_type)
   if options.build_directory:
     constants.SetBuildDirectory(options.build_directory)
+  if options.environment not in constants.VALID_ENVIRONMENTS:
+    error_func('--environment must be one of: %s' %
+               ', '.join(constants.VALID_ENVIRONMENTS))
 
 
 def AddDeviceOptions(option_parser):
@@ -832,9 +843,12 @@
       option_parser.error('Unrecognized arguments: %s' % (' '.join(args)))
       return constants.ERROR_EXIT_CODE
 
-  ProcessCommonOptions(options)
+  ProcessCommonOptions(options, option_parser.error)
 
-  if command in HOST_TESTS:
+  if options.enable_platform_mode:
+    return RunTestsInPlatformMode(command, options, option_parser)
+
+  if command in constants.LOCAL_MACHINE_TESTS:
     devices = []
   else:
     devices = _GetAttachedDevices(options.test_device)
@@ -863,6 +877,35 @@
     raise Exception('Unknown test type.')
 
 
+_SUPPORTED_IN_PLATFORM_MODE = [
+  # TODO(jbudorick): Add support for more test types.
+  'gtest',
+]
+
+
+def RunTestsInPlatformMode(command, options, option_parser):
+
+  if command not in _SUPPORTED_IN_PLATFORM_MODE:
+    option_parser.error('%s is not yet supported in platform mode' % command)
+
+  with environment_factory.CreateEnvironment(
+      command, options, option_parser.error) as env:
+    with test_instance_factory.CreateTestInstance(
+        command, options, option_parser.error) as test:
+      with test_run_factory.CreateTestRun(
+          options, env, test, option_parser.error) as test_run:
+        results = test_run.RunTests()
+
+        report_results.LogFull(
+            results=results,
+            test_type=test.TestType(),
+            test_package=test_run.TestPackage(),
+            annotation=options.annotations,
+            flakiness_server=options.flakiness_dashboard_server)
+
+  return results
+
+
 def HelpCommand(command, _options, args, option_parser):
   """Display help for a certain command, or overall help.
 
diff --git a/build/common.gypi b/build/common.gypi
index 4dbaa41..753abfe 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -487,12 +487,12 @@
       # Enable Google Now.
       'enable_google_now%': 1,
 
-      # Enable printing support and UI. This variable is used to configure
-      # which parts of printing will be built. 0 disables printing completely,
-      # 1 enables it fully, and 2 enables only the codepath to generate a
-      # Metafile (e.g. usually a PDF or EMF) and disables print preview, cloud
-      # print, UI, etc.
-      'enable_printing%': 1,
+      # Enable basic printing support and UI.
+      'enable_basic_printing%': 1,
+
+      # Enable printing with print preview. It does not imply
+      # enable_basic_printing. It's possible to build Chrome with preview only.
+      'enable_print_preview%': 1,
 
       # Set the version of CLD.
       #   0: Don't specify the version. This option is for the Finch testing.
@@ -770,7 +770,8 @@
           'arm_neon_optional%': 1,
           'native_discardable_memory%': 1,
           'native_memory_pressure_signals%': 1,
-          'enable_printing%': 2,
+          'enable_basic_printing%': 1,
+          'enable_print_preview%': 0,
           'enable_task_manager%':0,
           'video_hole%': 1,
         }],
@@ -809,7 +810,8 @@
           'enable_extensions%': 0,
           'enable_google_now%': 0,
           'cld_version%': 1,
-          'enable_printing%': 0,
+          'enable_basic_printing%': 0,
+          'enable_print_preview%': 0,
           'enable_session_service%': 0,
           'enable_themes%': 0,
           'enable_webrtc%': 0,
@@ -905,6 +907,8 @@
         }],
 
         ['chromeos==1', {
+          'enable_basic_printing%': 0,
+          'enable_print_preview%': 1,
           # When building for ChromeOS we dont want Chromium to use libjpeg_turbo.
           'use_libjpeg_turbo%': 0,
         }],
@@ -979,7 +983,8 @@
         # Disable various features by default on embedded.
         ['embedded==1', {
           'remoting%': 0,
-          'enable_printing%': 0,
+          'enable_basic_printing%': 0,
+          'enable_print_preview%': 0,
         }],
 
         # By default, use ICU data file (icudtl.dat) on all platforms
@@ -1175,7 +1180,8 @@
     'test_isolation_mode%': '<(test_isolation_mode)',
     'test_isolation_outdir%': '<(test_isolation_outdir)',
     'test_isolation_fail_on_missing': '<(test_isolation_fail_on_missing)',
-    'enable_printing%': '<(enable_printing)',
+    'enable_basic_printing%': '<(enable_basic_printing)',
+    'enable_print_preview%': '<(enable_print_preview)',
     'enable_spellcheck%': '<(enable_spellcheck)',
     'enable_google_now%': '<(enable_google_now)',
     'cld_version%': '<(cld_version)',
@@ -2096,11 +2102,11 @@
       ['enable_plugins!=0', {
         'grit_defines': ['-D', 'enable_plugins'],
       }],
-      ['enable_printing!=0', {
+      ['enable_basic_printing==1 or enable_print_preview==1', {
         'grit_defines': ['-D', 'enable_printing'],
       }],
-      ['enable_printing==1', {
-        'grit_defines': ['-D', 'enable_full_printing'],
+      ['enable_print_preview==1', {
+        'grit_defines': ['-D', 'enable_print_preview'],
       }],
       ['enable_themes==1', {
         'grit_defines': ['-D', 'enable_themes'],
@@ -2348,6 +2354,7 @@
       }, {
          'use_seccomp_bpf%': 0,
       }],
+
       # Set component build with LTO until all tests pass.
       # This also reduces link time.
       ['use_lto==1', {
@@ -2386,7 +2393,7 @@
     # Whether to allow building of the GPU-related isolates.
     'archive_gpu_tests%': 0,
 
-     # Whether to allow building of chromoting related isolates.
+    # Whether to allow building of chromoting related isolates.
     'archive_chromoting_tests%': 0,
   },
   'target_defaults': {
@@ -2923,12 +2930,19 @@
         # chrome://translate-internals
         'defines': ['CLD2_DATA_SOURCE=<(cld2_data_source)'],
       }],
-      ['enable_printing==1', {
-        'defines': ['ENABLE_FULL_PRINTING=1', 'ENABLE_PRINTING=1'],
-      }],
-      ['enable_printing==2', {
+      ['enable_basic_printing==1 or enable_print_preview==1', {
+        # Convenience define for ENABLE_BASIC_PRINTING || ENABLE_PRINT_PREVIEW.
         'defines': ['ENABLE_PRINTING=1'],
       }],
+      ['enable_basic_printing==1', {
+        # Enable basic printing support and UI.
+        'defines': ['ENABLE_BASIC_PRINTING=1'],
+      }],
+      ['enable_print_preview==1', {
+        # Enable printing with print preview.
+        # Can be defined without ENABLE_BASIC_PRINTING.
+        'defines': ['ENABLE_PRINT_PREVIEW=1'],
+      }],
       ['enable_spellcheck==1', {
         'defines': ['ENABLE_SPELLCHECK=1'],
       }],
@@ -4641,10 +4655,19 @@
                   '--sysroot=<(android_ndk_sysroot)',
                   '-nostdlib',
                 ],
+                'variables': {
+                  'conditions': [
+                    ['target_arch=="arm" and arm_thumb==1', {
+                      'thumb_option%': '-mthumb',
+                    }, {
+                      'thumb_option%': '',
+                    }],
+                  ],
+                },
                 'libraries': [
                   '-l<(android_stlport_library)',
                   # Manually link the libgcc.a that the cross compiler uses.
-                  '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
+                  '<!(<(android_toolchain)/*-gcc <(thumb_option) -print-libgcc-file-name)',
                   '-lc',
                   '-ldl',
                   '-lm',
@@ -4709,8 +4732,12 @@
                 'cflags': [
                   '-isystem<(android_stlport_include)',
                 ],
-                'ldflags': [
-                  '-L<(android_stlport_libs_dir)',
+                'conditions': [
+                  ['target_arch=="arm" and arm_thumb==1', {
+                    'ldflags': [ '-L<(android_stlport_libs_dir)/thumb' ]
+                  }, {
+                    'ldflags': [ '-L<(android_stlport_libs_dir)' ]
+                  }],
                 ],
               }, { # else: android_webview_build!=0
                 'aosp_build_settings': {
@@ -5151,9 +5178,7 @@
     ['OS=="ios"', {
       'target_defaults': {
         'xcode_settings' : {
-          # TODO(stuartmorgan): switch to c++0x (see TODOs in the clang
-          # section above).
-          'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++0x',
+          'CLANG_CXX_LANGUAGE_STANDARD': 'c++11',
 
           'conditions': [
             # Older Xcodes do not support -Wno-deprecated-register, so pass an
@@ -5719,13 +5744,17 @@
     # the default on the current development version of AOSP but we force it
     # here in case we need to compile against an older release version. We also
     # explicitly set it to false for target binaries to avoid causing problems
-    # for the work to enable clang by default in AOSP.
+    # for the work to enable clang by default in AOSP. We also force the use of
+    # libstdc++ on host as peculiarities of the android gyp backend mean that
+    # using libc++ doesn't work, and Chromium doesn't yet require a more modern
+    # C++ library.
     ['android_webview_build==1', {
       'target_defaults': {
         'target_conditions': [
           ['_toolset=="host"', {
             'aosp_build_settings': {
               'LOCAL_CLANG': 'true',
+              'LOCAL_CXX_STL': 'libstdc++',
             },
           }, {  # else: _toolset != "host"
             'aosp_build_settings': {
diff --git a/build/config/BUILD.gn b/build/config/BUILD.gn
index 7fbbd5d..ecbef88 100644
--- a/build/config/BUILD.gn
+++ b/build/config/BUILD.gn
@@ -54,10 +54,17 @@
   if (enable_plugins) {
     defines += [ "ENABLE_PLUGINS=1" ]
   }
-  if (printing_mode > 0) {
+  if (enable_basic_printing || enable_print_preview) {
+    # Convenience define for ENABLE_BASIC_PRINTING || ENABLE_PRINT_PREVIEW.
     defines += [ "ENABLE_PRINTING=1" ]
-    if (printing_mode < 2) {
-      defines += [ "ENABLE_FULL_PRINTING=1" ]
+    if (enable_basic_printing) {
+      # Enable basic printing support and UI.
+      defines += [ "ENABLE_BASIC_PRINTING=1" ]
+    }
+    if (enable_print_preview) {
+      # Enable printing with print preview.
+      # Can be defined without ENABLE_BASIC_PRINTING.
+      defines += [ "ENABLE_PRINT_PREVIEW=1" ]
     }
   }
   if (enable_spellcheck) {
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
index 6ef6a23..c9ec4a2 100644
--- a/build/config/BUILDCONFIG.gn
+++ b/build/config/BUILDCONFIG.gn
@@ -41,8 +41,7 @@
   # Normally this would get set automatically when you specify a target using
   # the 64-bit toolchain. You can also set this on the command line to convert
   # the default toolchain to 64-bit.
-  # Mojo Windows only tries to make x64 work at the moment.
-  force_win64 = true
+  force_win64 = false
 
   # Selects the desired build flavor. Official builds get additional
   # processing to prepare for release. Normally you will want to develop and
diff --git a/build/config/OWNERS b/build/config/OWNERS
new file mode 100644
index 0000000..9b79b9a
--- /dev/null
+++ b/build/config/OWNERS
@@ -0,0 +1,2 @@
+set noparent
+brettw@chromium.org
diff --git a/build/config/android/config.gni b/build/config/android/config.gni
index a2de843..ce9a175 100644
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -37,6 +37,23 @@
     android_chrome_build_id = "\"\""
   }
 
+  # ABI ------------------------------------------------------------------------
+
+  if (cpu_arch == "x86") {
+    android_app_abi = "x86"
+  } else if (cpu_arch == "arm") {
+    import("//build/config/arm.gni")
+    if (arm_version < 7) {
+      android_app_abi = "armeabi"
+    } else {
+      android_app_abi = "armeabi-v7a"
+    }
+  } else if (cpu_arch == "mipsel") {
+    android_app_abi = "mips"
+  } else {
+    assert(false, "Unknown Android ABI: " + cpu_arch)
+  }
+
   # Host stuff -----------------------------------------------------------------
 
   # Defines the name the Android build gives to the current host CPU
@@ -106,8 +123,13 @@
     android_prebuilt_arch = "android-arm"
     _binary_prefix = "arm-linux-androideabi"
     android_toolchain_root = "$arm_android_toolchain_root"
-    android_libgcc_file =
-      "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a"
+    if (arm_use_thumb) {
+      android_libgcc_file =
+        "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/thumb/libgcc.a"
+    } else {
+      android_libgcc_file =
+        "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a"
+    }
   } else if (cpu_arch == "mipsel") {
     android_prebuilt_arch = "android-mips"
     _binary_prefix = "mipsel-linux-android"
@@ -130,23 +152,6 @@
   } else {
     android_stlport_library = "stlport_static"
   }
-
-  # ABI ------------------------------------------------------------------------
-
-  if (cpu_arch == "x86") {
-    android_app_abi = "x86"
-  } else if (cpu_arch == "arm") {
-    import("//build/config/arm.gni")
-    if (arm_version < 7) {
-      android_app_abi = "armeabi"
-    } else {
-      android_app_abi = "armeabi-v7a"
-    }
-  } else if (cpu_arch == "mipsel") {
-    android_app_abi = "mips"
-  } else {
-    assert(false, "Unknown Android ABI: " + cpu_arch)
-  }
 } else {
   if (!defined(is_android_webview_build)) {
     is_android_webview_build = false
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index deb7c9f..de3fac5 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -46,7 +46,9 @@
 }
 
 # TODO(GYP): is_ubsan, is_ubsan_vptr
-using_sanitizer = is_asan || is_lsan || is_tsan || is_msan
+if (!is_win) {
+  using_sanitizer = is_asan || is_lsan || is_tsan || is_msan
+}
 
 # compiler ---------------------------------------------------------------------
 #
@@ -80,9 +82,6 @@
                   # structured exceptions (only C++ ones).
       ]
     }
-    if (using_sanitizer) {
-      # Avoid error.
-    }
   } else {
     # Common GCC compiler flags setup.
     # --------------------------------
@@ -486,7 +485,11 @@
       "-isystem" + rebase_path("$android_stlport_root/stlport",
                                root_build_dir)
     ]
-    lib_dirs += [ "$android_stlport_root/libs/$android_app_abi" ]
+    if (arm_use_thumb) {
+      lib_dirs += [ "$android_stlport_root/libs/$android_app_abi/thumb" ]
+    } else {
+      lib_dirs += [ "$android_stlport_root/libs/$android_app_abi" ]
+    }
 
     if (component_mode == "shared_library") {
       libs += [ "stlport_shared" ]
@@ -528,12 +531,10 @@
   if (is_win) {
     cflags = [
       "/W4",  # Warning level 4.
-      "/wd4267",  # TODO(jschuh): crbug.com/167187 size_t to int truncations.
     ]
   } else {
     cflags = [
       "-Wall",
-      "-Wextra",
 
       # GCC turns on -Wsign-compare for C++ under -Wall, but clang doesn't,
       # so we specify it explicitly.
@@ -559,7 +560,6 @@
     cflags += [
       "/W3",  # Warning level 3.
       "/wd4800",  # Disable warning when forcing value to bool.
-      "/wd4267",  # TODO(jschuh): crbug.com/167187 size_t to int truncations.
     ]
     defines += [
       "_CRT_NONSTDC_NO_WARNINGS",
diff --git a/build/config/features.gni b/build/config/features.gni
index 49fe155..a395b40 100644
--- a/build/config/features.gni
+++ b/build/config/features.gni
@@ -63,15 +63,12 @@
 
 enable_browser_cdms = is_android
 
-# Enable printing support and UI. This variable is used to configure which
-# parts of printing will be built. 0 disables printing completely, 1 enables it
-# fully, and 2 enables only the codepath to generate a Metafile (e.g.  usually
-# a PDF or EMF) and disables print preview, cloud print, UI, etc.
-if (is_android) {
-  printing_mode = 2
-} else {
-  printing_mode = 1
-}
+# Enable basic printing support and UI.
+enable_basic_printing = !is_chromeos
+
+# Enable printing with print preview. It does not imply
+# enable_basic_printing. It's possible to build Chrome with preview only.
+enable_print_preview = !is_android
 
 # The seccomp-bpf sandbox is only supported on three architectures
 # currently.
diff --git a/build/config/linux/BUILD.gn b/build/config/linux/BUILD.gn
index 98d131e..758f42a 100644
--- a/build/config/linux/BUILD.gn
+++ b/build/config/linux/BUILD.gn
@@ -118,8 +118,7 @@
   # These packages should _only_ be expected when building for a target.
   # If these extra checks are not run, gconf is required when building host
   # tools for a CrOS build.
-  if (current_toolchain == host_toolchain &&
-      host_toolchain == default_toolchain) {
+  if (current_toolchain == default_toolchain) {
     pkg_config("gconf") {
       packages = [ "gconf-2.0" ]
       defines = [ "USE_GCONF" ]
diff --git a/build/get_landmines.py b/build/get_landmines.py
index 5740cb8..1eec5ee 100755
--- a/build/get_landmines.py
+++ b/build/get_landmines.py
@@ -60,6 +60,7 @@
   if platform() == 'android':
     print 'Delete stale generated .java files yet again. crbug.com/349592'
     print 'Clobber to delete incompatible object binary format with NDK r10c'
+  print 'Clobber to fix missing NaCl gyp dependencies (crbug.com/427427).'
 
 
 def main():
diff --git a/build/go/rules.gni b/build/go/rules.gni
index 79453d1..55dd386 100644
--- a/build/go/rules.gni
+++ b/build/go/rules.gni
@@ -59,3 +59,39 @@
     ] + rebase_path(invoker.sources, build_dir)
   }
 }
+
+template("go_shared_library") {
+  # Only available on android for now.
+  assert(is_android)
+  assert(defined(invoker.sources))
+  assert(go_build_tool != "")
+
+  static_library_name = target_name + "_static_library"
+
+  static_library(static_library_name) {
+    complete_static_lib = true
+    deps = invoker.deps
+  }
+
+  action(target_name) {
+    deps = [ ":$static_library_name" ]
+    script = "//build/go/go.py"
+    outputs = [ "${target_out_dir}/${target_name}" ]
+    # Since go test does not permit specifying an output directory or output
+    # binary name, we create a temporary build directory, and the python
+    # script will later identify the output, copy it to the target location,
+    # and clean up the temporary build directory.
+    build_dir = "${target_out_dir}/${target_name}_build"
+    args = [
+      "--", 
+      "CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 ${go_build_tool}",
+      rebase_path(build_dir, root_build_dir),
+      rebase_path(target_out_dir, root_build_dir) + "/${target_name}",
+      rebase_path("//", root_build_dir),
+      "-I" + rebase_path("//"),
+      " -L" + rebase_path(target_out_dir) +
+       " -l" + static_library_name + "",
+      "build -ldflags=-shared",
+    ] + rebase_path(invoker.sources, build_dir)
+  }
+}
\ No newline at end of file
diff --git a/build/gyp_chromium b/build/gyp_chromium
index 326919c..ad2796b 100755
--- a/build/gyp_chromium
+++ b/build/gyp_chromium
@@ -178,6 +178,9 @@
     if os.path.realpath(path) not in specified_includes:
       result.append(path)
 
+  if os.environ.get('GYP_INCLUDE_FIRST') != None:
+    AddInclude(os.path.join(chrome_src, os.environ.get('GYP_INCLUDE_FIRST')))
+
   # Always include common.gypi.
   AddInclude(os.path.join(script_dir, 'common.gypi'))
 
@@ -185,6 +188,9 @@
   for supplement in supplemental_files:
     AddInclude(supplement)
 
+  if os.environ.get('GYP_INCLUDE_LAST') != None:
+    AddInclude(os.path.join(chrome_src, os.environ.get('GYP_INCLUDE_LAST')))
+
   return result
 
 
diff --git a/build/gyp_helper.py b/build/gyp_helper.py
index eadc7a5..645943a 100644
--- a/build/gyp_helper.py
+++ b/build/gyp_helper.py
@@ -34,6 +34,8 @@
       'GYP_CROSSCOMPILE',
       'GYP_GENERATOR_OUTPUT',
       'GYP_GENERATORS',
+      'GYP_INCLUDE_FIRST',
+      'GYP_INCLUDE_LAST',
       'GYP_MSVS_VERSION',
   )
   for var in supported_vars:
diff --git a/build/ios/grit_whitelist.txt b/build/ios/grit_whitelist.txt
index 055393d..39e5628 100644
--- a/build/ios/grit_whitelist.txt
+++ b/build/ios/grit_whitelist.txt
@@ -4,6 +4,7 @@
 IDR_ABOUT_VERSION_CSS
 IDR_ABOUT_VERSION_HTML
 IDR_ABOUT_VERSION_JS
+IDR_APPLE_FLAGS_HTML
 IDR_AUTOFILL_CC_AMEX
 IDR_AUTOFILL_CC_DINERS
 IDR_AUTOFILL_CC_DISCOVER
@@ -11,6 +12,7 @@
 IDR_AUTOFILL_CC_JCB
 IDR_AUTOFILL_CC_MASTERCARD
 IDR_AUTOFILL_CC_VISA
+IDR_CONTEXTUAL_SEARCH_PROMO_HTML
 IDR_CONTROLLED_SETTING_MANDATORY
 IDR_CRASHES_HTML
 IDR_CRASHES_JS
@@ -21,6 +23,11 @@
 IDR_DEFAULT_FAVICON_64
 IDR_DIR_HEADER_HTML
 IDR_FLAGS_FAVICON
+IDR_FLAGS_HTML
+IDR_FLAGS_JS
+IDR_GCM_INTERNALS_CSS
+IDR_GCM_INTERNALS_HTML
+IDR_GCM_INTERNALS_JS
 IDR_HISTORY_FAVICON
 IDR_HISTORY_HTML
 IDR_HISTORY_JS
@@ -36,6 +43,8 @@
 IDR_NET_ERROR_HTML
 IDR_NET_EXPORT_HTML
 IDR_NET_EXPORT_JS
+IDR_NET_INTERNALS_INDEX_HTML
+IDR_NET_INTERNALS_INDEX_JS
 IDR_OMAHA_HTML
 IDR_OMAHA_JS
 IDR_OMNIBOX_CLEAR_IOS
@@ -64,9 +73,13 @@
 IDR_PAGEINFO_INFO
 IDR_PAGEINFO_WARNING_MAJOR
 IDR_PAGEINFO_WARNING_MINOR
+IDR_POLICY_CSS
+IDR_POLICY_HTML
+IDR_POLICY_JS
 IDR_PRERENDER
 IDR_PRINTER_FAVICON
 IDR_PRODUCT_LOGO_26
+IDR_SAD_FAVICON
 IDR_SAD_TAB
 IDR_SECURITY_INTERSTITIAL_HTML
 IDR_SIGNIN_INTERNALS_INDEX_HTML
@@ -86,6 +99,7 @@
 IDR_SYNC_INTERNALS_TYPES_JS
 IDR_TOOLBAR_SHADOW_FULL_BLEED
 IDR_TRANSLATE_JS
+IDR_UBER_UTILS_JS
 IDR_WEBUI_CSS_ALERT_OVERLAY
 IDR_WEBUI_CSS_APPS_COMMON
 IDR_WEBUI_CSS_APPS_TOPBUTTON_BAR
@@ -173,6 +187,7 @@
 IDS_ABOUT_VERSION_OS
 IDS_ABOUT_VERSION_PATH_NOTFOUND
 IDS_ABOUT_VERSION_PROFILE_PATH
+IDS_ABOUT_VERSION_REVISION
 IDS_ABOUT_VERSION_TITLE
 IDS_ABOUT_VERSION_UNOFFICIAL
 IDS_ABOUT_VERSION_USER_AGENT
@@ -185,6 +200,7 @@
 IDS_ACCNAME_VOICE_SEARCH
 IDS_ALLOW_INSECURE_CONTENT_BUTTON
 IDS_ALTERNATE_NAV_URL_VIEW_LABEL
+IDS_ANNOTATED_SUGGESTION
 IDS_APP_CANCEL
 IDS_APP_OK
 IDS_APP_UNTITLED_SHORTCUT_FILE_NAME
@@ -262,6 +278,8 @@
 IDS_CERT_ERROR_AUTHORITY_INVALID_DETAILS
 IDS_CERT_ERROR_AUTHORITY_INVALID_EXTRA_INFO_2
 IDS_CERT_ERROR_AUTHORITY_INVALID_TITLE
+IDS_CERT_ERROR_CHAIN_EXPIRED_DESCRIPTION
+IDS_CERT_ERROR_CHAIN_EXPIRED_DETAILS
 IDS_CERT_ERROR_COMMON_NAME_INVALID_DESCRIPTION
 IDS_CERT_ERROR_COMMON_NAME_INVALID_DETAILS
 IDS_CERT_ERROR_COMMON_NAME_INVALID_EXTRA_INFO_2
@@ -280,6 +298,9 @@
 IDS_CERT_ERROR_INVALID_CERT_DETAILS
 IDS_CERT_ERROR_INVALID_CERT_EXTRA_INFO_2
 IDS_CERT_ERROR_INVALID_CERT_TITLE
+IDS_CERT_ERROR_NAME_CONSTRAINT_VIOLATION_DESCRIPTION
+IDS_CERT_ERROR_NAME_CONSTRAINT_VIOLATION_DETAILS
+IDS_CERT_ERROR_NAME_CONSTRAINT_VIOLATION_TITLE
 IDS_CERT_ERROR_NOT_YET_VALID_DESCRIPTION
 IDS_CERT_ERROR_NOT_YET_VALID_DETAILS
 IDS_CERT_ERROR_NOT_YET_VALID_DETAILS_EXTRA_INFO_2
@@ -307,6 +328,13 @@
 IDS_CERT_ERROR_WEAK_SIGNATURE_ALGORITHM_TITLE
 IDS_CHROME_TO_DEVICE_PRINT_TO_PHONE
 IDS_CHROME_TO_DEVICE_SNAPSHOTS
+IDS_CLOSE
+IDS_CONTEXTUAL_SEARCH_HEADER
+IDS_CONTEXTUAL_SEARCH_PROMO_DESCRIPTION_1
+IDS_CONTEXTUAL_SEARCH_PROMO_DESCRIPTION_2
+IDS_CONTEXTUAL_SEARCH_PROMO_FEATURE_NAME
+IDS_CONTEXTUAL_SEARCH_PROMO_OPTIN
+IDS_CONTEXTUAL_SEARCH_PROMO_OPTOUT
 IDS_COULDNT_OPEN_PROFILE_ERROR
 IDS_CRASHES_BUG_LINK_LABEL
 IDS_CRASHES_CRASH_COUNT_BANNER_FORMAT
@@ -316,6 +344,7 @@
 IDS_CRASHES_DISABLED_MESSAGE
 IDS_CRASHES_NO_CRASHES_MESSAGE
 IDS_CRASHES_TITLE
+IDS_CRASHES_UPLOAD_MESSAGE
 IDS_CREDIT_CARD_NUMBER_PREVIEW_FORMAT
 IDS_DEFAULT_AVATAR_NAME_10
 IDS_DEFAULT_AVATAR_NAME_11
@@ -357,6 +386,7 @@
 IDS_DOM_DISTILLER_WEBUI_VIEW_URL
 IDS_DOM_DISTILLER_WEBUI_VIEW_URL_FAILED
 IDS_DONE
+IDS_EASY_UNLOCK_SCREENLOCK_USER_POD_AUTH_VALUE
 IDS_EDIT_FIND_MAC
 IDS_EMPTY_KEYWORD_VALUE
 IDS_ERRORPAGES_BUTTON_LESS
@@ -369,6 +399,7 @@
 IDS_ERRORPAGES_DETAILS_BAD_SSL_CLIENT_AUTH_CERT
 IDS_ERRORPAGES_DETAILS_BLOCKED
 IDS_ERRORPAGES_DETAILS_BLOCKED_BY_ADMINISTRATOR
+IDS_ERRORPAGES_DETAILS_BLOCKED_ENROLLMENT_CHECK_PENDING
 IDS_ERRORPAGES_DETAILS_CACHE_MISS
 IDS_ERRORPAGES_DETAILS_CACHE_READ_FAILURE
 IDS_ERRORPAGES_DETAILS_CONNECTION_CLOSED
@@ -397,8 +428,10 @@
 IDS_ERRORPAGES_DETAILS_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH
 IDS_ERRORPAGES_DETAILS_RESPONSE_HEADERS_MULTIPLE_LOCATION
 IDS_ERRORPAGES_DETAILS_SERVICE_UNAVAILABLE
+IDS_ERRORPAGES_DETAILS_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
 IDS_ERRORPAGES_DETAILS_SSL_PROTOCOL_ERROR
 IDS_ERRORPAGES_DETAILS_SSL_UNSAFE_NEGOTIATION
+IDS_ERRORPAGES_DETAILS_SSL_VERSION_OR_CIPHER_MISMATCH
 IDS_ERRORPAGES_DETAILS_TEMPORARILY_THROTTLED
 IDS_ERRORPAGES_DETAILS_TIMED_OUT
 IDS_ERRORPAGES_DETAILS_TOO_MANY_REDIRECTS
@@ -422,17 +455,18 @@
 IDS_ERRORPAGES_HEADING_NOT_FOUND
 IDS_ERRORPAGES_HEADING_PINNING_FAILURE
 IDS_ERRORPAGES_HEADING_PROXY_CONNECTION_FAILED
+IDS_ERRORPAGES_HEADING_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
 IDS_ERRORPAGES_HEADING_SSL_PROTOCOL_ERROR
+IDS_ERRORPAGES_HEADING_SSL_VERSION_OR_CIPHER_MISMATCH
 IDS_ERRORPAGES_HEADING_TOO_MANY_REDIRECTS
 IDS_ERRORPAGES_HEADING_WEAK_SERVER_EPHEMERAL_DH_KEY
 IDS_ERRORPAGES_HTTP_POST_WARNING
-IDS_ERRORPAGES_NET_BUTTON_DETAILS
-IDS_ERRORPAGES_NET_BUTTON_HIDE_DETAILS
 IDS_ERRORPAGES_SUGGESTION_CHECK_CONNECTION_BODY
 IDS_ERRORPAGES_SUGGESTION_CHECK_CONNECTION_HEADER
 IDS_ERRORPAGES_SUGGESTION_CONTACT_ADMINISTRATOR
 IDS_ERRORPAGES_SUGGESTION_DNS_CONFIG
 IDS_ERRORPAGES_SUGGESTION_FIREWALL_CONFIG
+IDS_ERRORPAGES_SUGGESTION_GOOGLE_SEARCH
 IDS_ERRORPAGES_SUGGESTION_LEARNMORE_BODY
 IDS_ERRORPAGES_SUGGESTION_NETWORK_PREDICTION
 IDS_ERRORPAGES_SUGGESTION_PROXY_CONFIG
@@ -446,6 +480,7 @@
 IDS_ERRORPAGES_SUMMARY_BAD_SSL_CLIENT_AUTH_CERT
 IDS_ERRORPAGES_SUMMARY_BLOCKED
 IDS_ERRORPAGES_SUMMARY_BLOCKED_BY_ADMINISTRATOR
+IDS_ERRORPAGES_SUMMARY_BLOCKED_ENROLLMENT_CHECK_PENDING
 IDS_ERRORPAGES_SUMMARY_CACHE_MISS
 IDS_ERRORPAGES_SUMMARY_CACHE_READ_FAILURE
 IDS_ERRORPAGES_SUMMARY_CONNECTION_REFUSED
@@ -471,7 +506,9 @@
 IDS_ERRORPAGES_SUMMARY_PINNING_FAILURE
 IDS_ERRORPAGES_SUMMARY_PROXY_CONNECTION_FAILED
 IDS_ERRORPAGES_SUMMARY_SERVICE_UNAVAILABLE
+IDS_ERRORPAGES_SUMMARY_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
 IDS_ERRORPAGES_SUMMARY_SSL_PROTOCOL_ERROR
+IDS_ERRORPAGES_SUMMARY_SSL_VERSION_OR_CIPHER_MISMATCH
 IDS_ERRORPAGES_SUMMARY_TEMPORARILY_THROTTLED
 IDS_ERRORPAGES_SUMMARY_TIMED_OUT
 IDS_ERRORPAGES_SUMMARY_TOO_MANY_REDIRECTS
@@ -482,12 +519,13 @@
 IDS_ERRORPAGES_TITLE_LOAD_FAILED
 IDS_ERRORPAGES_TITLE_NOT_AVAILABLE
 IDS_ERRORPAGES_TITLE_NOT_FOUND
+IDS_ERRORPAGE_NET_BUTTON_DETAILS
+IDS_ERRORPAGE_NET_BUTTON_HIDE_DETAILS
 IDS_EXTENSION_KEYWORD_COMMAND
 IDS_FEEDBACK_REPORT_PAGE_TITLE
 IDS_FEEDBACK_REPORT_URL_LABEL
 IDS_FEEDBACK_SEND_REPORT
 IDS_FEEDBACK_USER_EMAIL_LABEL
-IDS_FILE_BROWSER_OPEN_LABEL
 IDS_FIND_IN_PAGE_CLOSE_TOOLTIP
 IDS_FIND_IN_PAGE_COUNT
 IDS_FIND_IN_PAGE_NEXT_TOOLTIP
@@ -543,16 +581,22 @@
 IDS_FLAGS_DISABLE_WEBRTC_DESCRIPTION
 IDS_FLAGS_DISABLE_WEBRTC_NAME
 IDS_FLAGS_ENABLE
+IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_DESCRIPTION
+IDS_FLAGS_ENABLE_APPS_SHOW_ON_FIRST_PAINT_NAME
 IDS_FLAGS_ENABLE_ASYNC_DNS_DESCRIPTION
 IDS_FLAGS_ENABLE_ASYNC_DNS_NAME
 IDS_FLAGS_ENABLE_CARRIER_SWITCHING
 IDS_FLAGS_ENABLE_CARRIER_SWITCHING_DESCRIPTION
+IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH
+IDS_FLAGS_ENABLE_CONTEXTUAL_SEARCH_DESCRIPTION
 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_DESCRIPTION
 IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_NAME
 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_DESCRIPTION
 IDS_FLAGS_ENABLE_DEVTOOLS_EXPERIMENTS_NAME
 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_DESCRIPTION
 IDS_FLAGS_ENABLE_DOWNLOAD_RESUMPTION_NAME
+IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_DESCRIPTION
+IDS_FLAGS_ENABLE_ENHANCED_BOOKMARKS_NAME
 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_DESCRIPTION
 IDS_FLAGS_ENABLE_EXPERIMENTAL_CANVAS_FEATURES_NAME
 IDS_FLAGS_ENABLE_GESTURE_TAP_HIGHLIGHTING_DESCRIPTION
@@ -589,6 +633,8 @@
 IDS_FLAGS_ENABLE_TOUCH_DRAG_DROP_NAME
 IDS_FLAGS_ENABLE_TOUCH_EDITING_DESCRIPTION
 IDS_FLAGS_ENABLE_TOUCH_EDITING_NAME
+IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_DESCRIPTION
+IDS_FLAGS_ENABLE_TRANSLATE_NEW_UX_NAME
 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_DESCRIPTION
 IDS_FLAGS_EXPERIMENTAL_EXTENSION_APIS_NAME
 IDS_FLAGS_EXPERIMENTAL_WEB_PLATFORM_FEATURES_DESCRIPTION
@@ -633,6 +679,11 @@
 IDS_FLAGS_TABLE_TITLE
 IDS_FLAGS_THREADED_COMPOSITING_MODE_DESCRIPTION
 IDS_FLAGS_THREADED_COMPOSITING_MODE_NAME
+IDS_FLAGS_TOUCH_SCROLLING_MODE_ABSORB_TOUCHMOVE
+IDS_FLAGS_TOUCH_SCROLLING_MODE_DESCRIPTION
+IDS_FLAGS_TOUCH_SCROLLING_MODE_NAME
+IDS_FLAGS_TOUCH_SCROLLING_MODE_SYNC_TOUCHMOVE
+IDS_FLAGS_TOUCH_SCROLLING_MODE_TOUCHCANCEL
 IDS_FLAGS_UNSUPPORTED_TABLE_TITLE
 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_DESCRIPTION
 IDS_FLAGS_WALLET_SERVICE_USE_SANDBOX_NAME
@@ -648,6 +699,11 @@
 IDS_GOOGLE_URL_TRACKER_INFOBAR_MESSAGE
 IDS_GOOGLE_URL_TRACKER_INFOBAR_SWITCH
 IDS_GROUP_BY_DOMAIN_LABEL
+IDS_GUEST_PROFILE_NAME
+IDS_HARMFUL_V3_EXPLANATION_PARAGRAPH
+IDS_HARMFUL_V3_HEADING
+IDS_HARMFUL_V3_PRIMARY_PARAGRAPH
+IDS_HARMFUL_V3_PROCEED_PARAGRAPH
 IDS_HISTORY_ACTION_MENU_DESCRIPTION
 IDS_HISTORY_BLOCKED_VISIT_TEXT
 IDS_HISTORY_BROWSERESULTS
@@ -680,6 +736,7 @@
 IDS_HISTORY_RANGE_PREVIOUS
 IDS_HISTORY_RANGE_TODAY
 IDS_HISTORY_RANGE_WEEK
+IDS_HISTORY_REMOVE_BOOKMARK
 IDS_HISTORY_REMOVE_PAGE
 IDS_HISTORY_REMOVE_SELECTED_ITEMS
 IDS_HISTORY_SEARCHRESULTSFOR
@@ -692,8 +749,13 @@
 IDS_HTTP_POST_WARNING_TITLE
 IDS_IMPORT_FROM_FIREFOX
 IDS_IMPORT_FROM_ICEWEASEL
+IDS_JAVASCRIPT_ALERT_DEFAULT_TITLE
+IDS_JAVASCRIPT_ALERT_TITLE
+IDS_JAVASCRIPT_MESSAGEBOX_DEFAULT_TITLE
+IDS_JAVASCRIPT_MESSAGEBOX_TITLE
 IDS_KEYWORD_SEARCH
 IDS_LEARN_MORE
+IDS_LEGACY_DEFAULT_PROFILE_NAME
 IDS_LIBADDRESSINPUT_ADDRESS_LINE_1_LABEL
 IDS_LIBADDRESSINPUT_AREA
 IDS_LIBADDRESSINPUT_COUNTRY_OR_REGION_LABEL
@@ -738,7 +800,21 @@
 IDS_LOGIN_DIALOG_PASSWORD_FIELD
 IDS_LOGIN_DIALOG_TITLE
 IDS_LOGIN_DIALOG_USERNAME_FIELD
+IDS_MALWARE_V3_ADVICE_HEADING
+IDS_MALWARE_V3_EXPLANATION_PARAGRAPH
+IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_ADVICE
+IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_HISTORY
+IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE
+IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_ADVICE
+IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_HISTORY
+IDS_MALWARE_V3_HEADING
+IDS_MALWARE_V3_PRIMARY_PARAGRAPH
+IDS_MALWARE_V3_PROCEED_PARAGRAPH
+IDS_MALWARE_V3_PROCEED_PARAGRAPH_NOT_RECOMMEND
+IDS_MALWARE_V3_PROCEED_PARAGRAPH_SOCIAL
 IDS_MANAGED_USER_AVATAR_LABEL
+IDS_MIDI_SYSEX_INFOBAR_QUESTION
+IDS_MIDI_SYSEX_PERMISSION_FRAGMENT
 IDS_MOBILE_WELCOME_URL
 IDS_NACL_DEBUG_MASK_CHOICE_DEBUG_ALL
 IDS_NACL_DEBUG_MASK_CHOICE_EXCLUDE_UTILS_PNACL
@@ -747,6 +823,7 @@
 IDS_NET_EXPORT_NO_EMAIL_ACCOUNTS_ALERT_MESSAGE
 IDS_NET_EXPORT_NO_EMAIL_ACCOUNTS_ALERT_TITLE
 IDS_NEW_INCOGNITO_WINDOW_MAC
+IDS_NEW_NUMBERED_PROFILE_NAME
 IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE
 IDS_NEW_TAB_MOST_VISITED
 IDS_NEW_TAB_OTHER_SESSIONS_COLLAPSE_SESSION
@@ -760,6 +837,8 @@
 IDS_NUMBERED_PROFILE_NAME
 IDS_OK
 IDS_OMNIBOX_EMPTY_HINT
+IDS_OMNIBOX_EMPTY_HINT_NO_DEFAULT_SEARCH_PROVIDER
+IDS_OMNIBOX_EMPTY_HINT_WITH_DEFAULT_SEARCH_PROVIDER
 IDS_ONE_CLICK_SIGNIN_CONFIRM_EMAIL_DIALOG_CANCEL_BUTTON
 IDS_OPEN_TABS_NOTYETSYNCED
 IDS_OPEN_TABS_PROMOCOMPUTER
@@ -789,8 +868,8 @@
 IDS_PAGE_INFO_SECURITY_TAB_NOT_ENCRYPTED_CONNECTION_TEXT
 IDS_PAGE_INFO_SECURITY_TAB_NO_REVOCATION_MECHANISM
 IDS_PAGE_INFO_SECURITY_TAB_RENEGOTIATION_MESSAGE
-IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY
-IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY_EV
+IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY_EV_NO_CT
+IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY_NO_CT
 IDS_PAGE_INFO_SECURITY_TAB_SSL_VERSION
 IDS_PAGE_INFO_SECURITY_TAB_UNABLE_TO_CHECK_REVOCATION
 IDS_PAGE_INFO_SECURITY_TAB_UNKNOWN_PARTY
@@ -805,9 +884,19 @@
 IDS_PAST_TIME_TODAY
 IDS_PAST_TIME_YESTERDAY
 IDS_PDF_INFOBAR_ALWAYS_USE_READER_BUTTON
+IDS_PERMISSION_ALLOW
+IDS_PERMISSION_DENY
+IDS_PHISHING_V3_EXPLANATION_PARAGRAPH
+IDS_PHISHING_V3_HEADING
+IDS_PHISHING_V3_PRIMARY_PARAGRAPH
+IDS_PHISHING_V3_PROCEED_PARAGRAPH
 IDS_PLATFORM_LABEL
 IDS_PLUGIN_CONFIRM_INSTALL_DIALOG_ACCEPT_BUTTON
 IDS_PLUGIN_CONFIRM_INSTALL_DIALOG_TITLE
+IDS_PLUGIN_NOT_SUPPORTED
+IDS_POLICY_ASSOCIATION_STATE_ACTIVE
+IDS_POLICY_ASSOCIATION_STATE_DEPROVISIONED
+IDS_POLICY_ASSOCIATION_STATE_UNMANAGED
 IDS_POLICY_DEFAULT_SEARCH_DISABLED
 IDS_POLICY_DEPRECATED
 IDS_POLICY_DM_STATUS_HTTP_STATUS_ERROR
@@ -827,12 +916,30 @@
 IDS_POLICY_DM_STATUS_SUCCESS
 IDS_POLICY_DM_STATUS_TEMPORARY_UNAVAILABLE
 IDS_POLICY_DM_STATUS_UNKNOWN_ERROR
+IDS_POLICY_FILTER_PLACEHOLDER
+IDS_POLICY_HEADER_LEVEL
+IDS_POLICY_HEADER_NAME
+IDS_POLICY_HEADER_SCOPE
+IDS_POLICY_HEADER_STATUS
+IDS_POLICY_HEADER_VALUE
+IDS_POLICY_HIDE_EXPANDED_VALUE
 IDS_POLICY_INVALID_BOOKMARK
 IDS_POLICY_INVALID_PROXY_MODE_ERROR
 IDS_POLICY_INVALID_SEARCH_URL_ERROR
+IDS_POLICY_LABEL_CLIENT_ID
+IDS_POLICY_LABEL_DOMAIN
+IDS_POLICY_LABEL_REFRESH_INTERVAL
+IDS_POLICY_LABEL_STATUS
+IDS_POLICY_LABEL_TIME_SINCE_LAST_REFRESH
+IDS_POLICY_LABEL_USERNAME
 IDS_POLICY_LEVEL_ERROR
+IDS_POLICY_LEVEL_MANDATORY
+IDS_POLICY_LEVEL_RECOMMENDED
 IDS_POLICY_LIST_ENTRY_ERROR
+IDS_POLICY_NEVER_FETCHED
 IDS_POLICY_NOT_SPECIFIED_ERROR
+IDS_POLICY_NO_POLICIES_SET
+IDS_POLICY_OK
 IDS_POLICY_OUT_OF_RANGE_ERROR
 IDS_POLICY_OVERRIDDEN
 IDS_POLICY_PROXY_BOTH_SPECIFIED_ERROR
@@ -842,7 +949,15 @@
 IDS_POLICY_PROXY_MODE_PAC_URL_ERROR
 IDS_POLICY_PROXY_MODE_SYSTEM_ERROR
 IDS_POLICY_PROXY_NEITHER_SPECIFIED_ERROR
+IDS_POLICY_RELOAD_POLICIES
 IDS_POLICY_SCHEMA_VALIDATION_ERROR
+IDS_POLICY_SCOPE_DEVICE
+IDS_POLICY_SCOPE_USER
+IDS_POLICY_SHOW_EXPANDED_VALUE
+IDS_POLICY_SHOW_UNSET
+IDS_POLICY_STATUS
+IDS_POLICY_STATUS_DEVICE
+IDS_POLICY_STATUS_USER
 IDS_POLICY_STORE_STATUS_BAD_STATE
 IDS_POLICY_STORE_STATUS_LOAD_ERROR
 IDS_POLICY_STORE_STATUS_OK
@@ -852,7 +967,10 @@
 IDS_POLICY_STORE_STATUS_UNKNOWN_ERROR
 IDS_POLICY_STORE_STATUS_VALIDATION_ERROR
 IDS_POLICY_SUBKEY_ERROR
+IDS_POLICY_TITLE
 IDS_POLICY_TYPE_ERROR
+IDS_POLICY_UNKNOWN
+IDS_POLICY_UNSET
 IDS_POLICY_VALIDATION_BAD_INITIAL_SIGNATURE
 IDS_POLICY_VALIDATION_BAD_KEY_VERIFICATION_SIGNATURE
 IDS_POLICY_VALIDATION_BAD_SIGNATURE
@@ -874,8 +992,17 @@
 IDS_PROFILES_GUEST_PROFILE_NAME
 IDS_PROFILES_LOCAL_PROFILE_STATE
 IDS_PROFILE_TOO_NEW_ERROR
+IDS_PUSH_MESSAGES_BUBBLE_FRAGMENT
+IDS_PUSH_MESSAGES_BUBBLE_TEXT
+IDS_PUSH_MESSAGES_PERMISSION_QUESTION
+IDS_RECENT_TABS_MENU
 IDS_SAD_TAB_MESSAGE
+IDS_SAD_TAB_RELOAD_LABEL
 IDS_SAD_TAB_TITLE
+IDS_SAFEBROWSING_OVERRIDABLE_SAFETY_BUTTON
+IDS_SAFEBROWSING_V3_CLOSE_DETAILS_BUTTON
+IDS_SAFEBROWSING_V3_OPEN_DETAILS_BUTTON
+IDS_SAFEBROWSING_V3_TITLE
 IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON
 IDS_SAFE_BROWSING_MALWARE_BACK_HEADLINE
 IDS_SAFE_BROWSING_MALWARE_COLLAB_HEADLINE
@@ -884,6 +1011,7 @@
 IDS_SAFE_BROWSING_MALWARE_HEADLINE
 IDS_SAFE_BROWSING_MALWARE_LABEL
 IDS_SAFE_BROWSING_MALWARE_QUESTION_HEADLINE
+IDS_SAFE_BROWSING_MALWARE_REPORTING_AGREE
 IDS_SAFE_BROWSING_MALWARE_TITLE
 IDS_SAFE_BROWSING_MALWARE_V2_DESCRIPTION1
 IDS_SAFE_BROWSING_MALWARE_V2_DESCRIPTION1_SUBRESOURCE
@@ -921,8 +1049,10 @@
 IDS_SAFE_BROWSING_PHISHING_V2_HEADLINE
 IDS_SAFE_BROWSING_PHISHING_V2_REPORT_ERROR
 IDS_SAFE_BROWSING_PHISHING_V2_TITLE
+IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE
 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE_V2
 IDS_SAFE_BROWSING_PRIVACY_POLICY_URL
+IDS_SAVE
 IDS_SECURE_CONNECTION_EV
 IDS_SESSION_CRASHED_VIEW_MESSAGE
 IDS_SESSION_CRASHED_VIEW_RESTORE_BUTTON
@@ -932,7 +1062,35 @@
 IDS_SIGNED_IN_WITH_SYNC_DISABLED
 IDS_SIGNED_IN_WITH_SYNC_SUPPRESSED
 IDS_SIGNIN_ERROR_BUBBLE_VIEW_TITLE
-IDS_SSL_BLOCKING_PAGE_TITLE
+IDS_SINGLE_PROFILE_DISPLAY_NAME
+IDS_SSL_CLOCK_ERROR
+IDS_SSL_CLOCK_ERROR_EXPLANATION
+IDS_SSL_NONOVERRIDABLE_HSTS
+IDS_SSL_NONOVERRIDABLE_INVALID
+IDS_SSL_NONOVERRIDABLE_MORE
+IDS_SSL_NONOVERRIDABLE_MORE_INVALID_SP3
+IDS_SSL_NONOVERRIDABLE_PINNED
+IDS_SSL_NONOVERRIDABLE_REVOKED
+IDS_SSL_OVERRIDABLE_PRIMARY_PARAGRAPH
+IDS_SSL_OVERRIDABLE_PROCEED_LINK_TEXT
+IDS_SSL_OVERRIDABLE_PROCEED_PARAGRAPH
+IDS_SSL_OVERRIDABLE_SAFETY_BUTTON
+IDS_SSL_OVERRIDABLE_TITLE
+IDS_SSL_RELOAD
+IDS_SSL_V2_CLOCK_AHEAD_HEADING
+IDS_SSL_V2_CLOCK_BEHIND_HEADING
+IDS_SSL_V2_CLOCK_PRIMARY_PARAGRAPH
+IDS_SSL_V2_CLOCK_TITLE
+IDS_SSL_V2_CLOCK_UPDATE_DATE_AND_TIME
+IDS_SSL_V2_CLOSE_DETAILS_BUTTON
+IDS_SSL_V2_HEADING
+IDS_SSL_V2_OPEN_DETAILS_BUTTON
+IDS_SSL_V2_PRIMARY_PARAGRAPH
+IDS_SSL_V2_TITLE
+IDS_STARS_PROMO_LABEL_IOS
+IDS_SUPERVISED_USER_AVATAR_LABEL
+IDS_SUPERVISED_USER_NEW_AVATAR_LABEL
+IDS_SYNC_ACCOUNT_DETAILS_NOT_ENTERED
 IDS_SYNC_ACCOUNT_SYNCING_TO_USER
 IDS_SYNC_ACCOUNT_SYNCING_TO_USER_WITH_MANAGE_LINK
 IDS_SYNC_AUTHENTICATING_LABEL
@@ -1131,11 +1289,14 @@
 IDS_TRANSLATE_INFOBAR_ACCEPT
 IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE
 IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE_AUTODETERMINED_SOURCE_LANGUAGE
+IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE
 IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE
+IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_IOS
 IDS_TRANSLATE_INFOBAR_DENY
 IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT
 IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE
 IDS_TRANSLATE_INFOBAR_ERROR_SAME_LANGUAGE
+IDS_TRANSLATE_INFOBAR_NEVER_MESSAGE_IOS
 IDS_TRANSLATE_INFOBAR_OPTIONS_ABOUT
 IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS
 IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG
diff --git a/build/mac/tweak_info_plist.py b/build/mac/tweak_info_plist.py
index 4a6c475..2057bac 100755
--- a/build/mac/tweak_info_plist.py
+++ b/build/mac/tweak_info_plist.py
@@ -29,7 +29,7 @@
 import sys
 import tempfile
 
-TOP = os.path.join(env['SRCROOT'], '..')
+TOP = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 
 
 def _GetOutput(args):
diff --git a/build/secondary/tools/grit/grit_rule.gni b/build/secondary/tools/grit/grit_rule.gni
index 572b11f..8726927 100644
--- a/build/secondary/tools/grit/grit_rule.gni
+++ b/build/secondary/tools/grit/grit_rule.gni
@@ -159,10 +159,10 @@
 if (enable_plugins) {
   grit_defines += [ "-D", "enable_plugins" ]
 }
-if (printing_mode != 0) {
+if (enable_basic_printing || enable_print_preview) {
   grit_defines += [ "-D", "enable_printing" ]
-  if (printing_mode == 1) {
-    grit_defines += [ "-D", "enable_full_printing" ]
+  if (enable_print_preview) {
+    grit_defines += [ "-D", "enable_print_preview" ]
   }
 }
 if (enable_themes) {
diff --git a/build/toolchain/OWNERS b/build/toolchain/OWNERS
new file mode 100644
index 0000000..9b79b9a
--- /dev/null
+++ b/build/toolchain/OWNERS
@@ -0,0 +1,2 @@
+set noparent
+brettw@chromium.org
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn
index 85fbf62..a9fab7c 100644
--- a/build/toolchain/win/BUILD.gn
+++ b/build/toolchain/win/BUILD.gn
@@ -13,7 +13,7 @@
 # Its arguments are the VS path and the compiler wrapper tool. It will write
 # "environment.x86" and "environment.x64" to the build directory and return a
 # list to us.
-gyp_win_tool_path = rebase_path("//build/win/win_tool.py",
+gyp_win_tool_path = rebase_path("//tools/gyp/pylib/gyp/win_tool.py",
                                 root_build_dir)
 exec_script("setup_toolchain.py",
             [ visual_studio_path, gyp_win_tool_path, windows_sdk_path ])
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py
index 4ef3a1e..bdedd6f 100644
--- a/build/vs_toolchain.py
+++ b/build/vs_toolchain.py
@@ -18,6 +18,9 @@
 json_data_file = os.path.join(script_dir, 'win_toolchain.json')
 
 
+import gyp
+
+
 def SetEnvironmentAndGetRuntimeDllDirs():
   """Sets up os.environ to use the depot_tools VS toolchain with gyp, and
   returns the location of the VS runtime DLLs so they can be copied into
@@ -44,6 +47,14 @@
 
     os.environ['GYP_MSVS_OVERRIDE_PATH'] = toolchain
     os.environ['GYP_MSVS_VERSION'] = version
+    # We need to make sure windows_sdk_path is set to the automated
+    # toolchain values in GYP_DEFINES, but don't want to override any
+    # otheroptions.express
+    # values there.
+    gyp_defines_dict = gyp.NameValueListToDict(gyp.ShlexEnv('GYP_DEFINES'))
+    gyp_defines_dict['windows_sdk_path'] = win8sdk
+    os.environ['GYP_DEFINES'] = ' '.join('%s=%s' % (k, pipes.quote(str(v)))
+        for k, v in gyp_defines_dict.iteritems())
     os.environ['WINDOWSSDKDIR'] = win8sdk
     os.environ['WDK_DIR'] = wdk
     # Include the VS runtime in the PATH in case it's not machine-installed.
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt
index 9fb90cc..526203f 100644
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@ -143,3 +143,5 @@
 Cool whitespace change for git-cl land
 
 Oh god the bots are red! I'm blind! Mmmm, cronuts.
+
+If you stand on your head, you will get footprints in your hair.
diff --git a/build/win/win_tool.py b/build/win/win_tool.py
deleted file mode 100644
index 5281b97..0000000
--- a/build/win/win_tool.py
+++ /dev/null
@@ -1,315 +0,0 @@
-#!/usr/bin/env python

-

-# Copyright (c) 2012 Google Inc. All rights reserved.

-# Use of this source code is governed by a BSD-style license that can be

-# found in the LICENSE file.

-

-"""Utility functions for Windows builds.

-

-These functions are executed via gyp-win-tool when using the ninja generator.

-"""

-

-import os

-import re

-import shutil

-import subprocess

-import stat

-import string

-import sys

-

-BASE_DIR = os.path.dirname(os.path.abspath(__file__))

-

-# A regex matching an argument corresponding to the output filename passed to

-# link.exe.

-_LINK_EXE_OUT_ARG = re.compile('/OUT:(?P<out>.+)$', re.IGNORECASE)

-

-def main(args):

-  executor = WinTool()

-  exit_code = executor.Dispatch(args)

-  if exit_code is not None:

-    sys.exit(exit_code)

-

-

-class WinTool(object):

-  """This class performs all the Windows tooling steps. The methods can either

-  be executed directly, or dispatched from an argument list."""

-

-  def _UseSeparateMspdbsrv(self, env, args):

-    """Allows to use a unique instance of mspdbsrv.exe per linker instead of a

-    shared one."""

-    if len(args) < 1:

-      raise Exception("Not enough arguments")

-

-    if args[0] != 'link.exe':

-      return

-

-    # Use the output filename passed to the linker to generate an endpoint name

-    # for mspdbsrv.exe.

-    endpoint_name = None

-    for arg in args:

-      m = _LINK_EXE_OUT_ARG.match(arg)

-      if m:

-        endpoint_name = re.sub(r'\W+', '',

-            '%s_%d' % (m.group('out'), os.getpid()))

-        break

-

-    if endpoint_name is None:

-      return

-

-    # Adds the appropriate environment variable. This will be read by link.exe

-    # to know which instance of mspdbsrv.exe it should connect to (if it's

-    # not set then the default endpoint is used).

-    env['_MSPDBSRV_ENDPOINT_'] = endpoint_name

-

-  def Dispatch(self, args):

-    """Dispatches a string command to a method."""

-    if len(args) < 1:

-      raise Exception("Not enough arguments")

-

-    method = "Exec%s" % self._CommandifyName(args[0])

-    return getattr(self, method)(*args[1:])

-

-  def _CommandifyName(self, name_string):

-    """Transforms a tool name like recursive-mirror to RecursiveMirror."""

-    return name_string.title().replace('-', '')

-

-  def _GetEnv(self, arch):

-    """Gets the saved environment from a file for a given architecture."""

-    # The environment is saved as an "environment block" (see CreateProcess

-    # and msvs_emulation for details). We convert to a dict here.

-    # Drop last 2 NULs, one for list terminator, one for trailing vs. separator.

-    pairs = open(arch).read()[:-2].split('\0')

-    kvs = [item.split('=', 1) for item in pairs]

-    return dict(kvs)

-

-  def ExecStamp(self, path):

-    """Simple stamp command."""

-    open(path, 'w').close()

-

-  def ExecRecursiveMirror(self, source, dest):

-    """Emulation of rm -rf out && cp -af in out."""

-    if os.path.exists(dest):

-      if os.path.isdir(dest):

-        def _on_error(fn, path, excinfo):

-          # The operation failed, possibly because the file is set to

-          # read-only. If that's why, make it writable and try the op again.

-          if not os.access(path, os.W_OK):

-            os.chmod(path, stat.S_IWRITE)

-          fn(path)

-        shutil.rmtree(dest, onerror=_on_error)

-      else:

-        if not os.access(dest, os.W_OK):

-          # Attempt to make the file writable before deleting it.

-          os.chmod(dest, stat.S_IWRITE)

-        os.unlink(dest)

-

-    if os.path.isdir(source):

-      shutil.copytree(source, dest)

-    else:

-      shutil.copy2(source, dest)

-

-  def ExecLinkWrapper(self, arch, use_separate_mspdbsrv, *args):

-    """Filter diagnostic output from link that looks like:

-    '   Creating library ui.dll.lib and object ui.dll.exp'

-    This happens when there are exports from the dll or exe.

-    """

-    env = self._GetEnv(arch)

-    if use_separate_mspdbsrv == 'True':

-      self._UseSeparateMspdbsrv(env, args)

-    link = subprocess.Popen(args,

-                            shell=True,

-                            env=env,

-                            stdout=subprocess.PIPE,

-                            stderr=subprocess.STDOUT)

-    out, _ = link.communicate()

-    for line in out.splitlines():

-      if not line.startswith('   Creating library '):

-        print line

-    return link.returncode

-

-  def ExecLinkWithManifests(self, arch, embed_manifest, out, ldcmd, resname,

-                            mt, rc, intermediate_manifest, *manifests):

-    """A wrapper for handling creating a manifest resource and then executing

-    a link command."""

-    # The 'normal' way to do manifests is to have link generate a manifest

-    # based on gathering dependencies from the object files, then merge that

-    # manifest with other manifests supplied as sources, convert the merged

-    # manifest to a resource, and then *relink*, including the compiled

-    # version of the manifest resource. This breaks incremental linking, and

-    # is generally overly complicated. Instead, we merge all the manifests

-    # provided (along with one that includes what would normally be in the

-    # linker-generated one, see msvs_emulation.py), and include that into the

-    # first and only link. We still tell link to generate a manifest, but we

-    # only use that to assert that our simpler process did not miss anything.

-    variables = {

-      'python': sys.executable,

-      'arch': arch,

-      'out': out,

-      'ldcmd': ldcmd,

-      'resname': resname,

-      'mt': mt,

-      'rc': rc,

-      'intermediate_manifest': intermediate_manifest,

-      'manifests': ' '.join(manifests),

-    }

-    add_to_ld = ''

-    if manifests:

-      subprocess.check_call(

-          '%(python)s gyp-win-tool manifest-wrapper %(arch)s %(mt)s -nologo '

-          '-manifest %(manifests)s -out:%(out)s.manifest' % variables)

-      if embed_manifest == 'True':

-        subprocess.check_call(

-            '%(python)s gyp-win-tool manifest-to-rc %(arch)s %(out)s.manifest'

-          ' %(out)s.manifest.rc %(resname)s' % variables)

-        subprocess.check_call(

-            '%(python)s gyp-win-tool rc-wrapper %(arch)s %(rc)s '

-            '%(out)s.manifest.rc' % variables)

-        add_to_ld = ' %(out)s.manifest.res' % variables

-    subprocess.check_call(ldcmd + add_to_ld)

-

-    # Run mt.exe on the theoretically complete manifest we generated, merging

-    # it with the one the linker generated to confirm that the linker

-    # generated one does not add anything. This is strictly unnecessary for

-    # correctness, it's only to verify that e.g. /MANIFESTDEPENDENCY was not

-    # used in a #pragma comment.

-    if manifests:

-      # Merge the intermediate one with ours to .assert.manifest, then check

-      # that .assert.manifest is identical to ours.

-      subprocess.check_call(

-          '%(python)s gyp-win-tool manifest-wrapper %(arch)s %(mt)s -nologo '

-          '-manifest %(out)s.manifest %(intermediate_manifest)s '

-          '-out:%(out)s.assert.manifest' % variables)

-      assert_manifest = '%(out)s.assert.manifest' % variables

-      our_manifest = '%(out)s.manifest' % variables

-      # Load and normalize the manifests. mt.exe sometimes removes whitespace,

-      # and sometimes doesn't unfortunately.

-      with open(our_manifest, 'rb') as our_f:

-        with open(assert_manifest, 'rb') as assert_f:

-          our_data = our_f.read().translate(None, string.whitespace)

-          assert_data = assert_f.read().translate(None, string.whitespace)

-      if our_data != assert_data:

-        os.unlink(out)

-        def dump(filename):

-          sys.stderr.write('%s\n-----\n' % filename)

-          with open(filename, 'rb') as f:

-            sys.stderr.write(f.read() + '\n-----\n')

-        dump(intermediate_manifest)

-        dump(our_manifest)

-        dump(assert_manifest)

-        sys.stderr.write(

-            'Linker generated manifest "%s" added to final manifest "%s" '

-            '(result in "%s"). '

-            'Were /MANIFEST switches used in #pragma statements? ' % (

-              intermediate_manifest, our_manifest, assert_manifest))

-        return 1

-

-  def ExecManifestWrapper(self, arch, *args):

-    """Run manifest tool with environment set. Strip out undesirable warning

-    (some XML blocks are recognized by the OS loader, but not the manifest

-    tool)."""

-    env = self._GetEnv(arch)

-    popen = subprocess.Popen(args, shell=True, env=env,

-                             stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

-    out, _ = popen.communicate()

-    for line in out.splitlines():

-      if line and 'manifest authoring warning 81010002' not in line:

-        print line

-    return popen.returncode

-

-  def ExecManifestToRc(self, arch, *args):

-    """Creates a resource file pointing a SxS assembly manifest.

-    |args| is tuple containing path to resource file, path to manifest file

-    and resource name which can be "1" (for executables) or "2" (for DLLs)."""

-    manifest_path, resource_path, resource_name = args

-    with open(resource_path, 'wb') as output:

-      output.write('#include <windows.h>\n%s RT_MANIFEST "%s"' % (

-        resource_name,

-        os.path.abspath(manifest_path).replace('\\', '/')))

-

-  def ExecMidlWrapper(self, arch, outdir, tlb, h, dlldata, iid, proxy, idl,

-                      *flags):

-    """Filter noisy filenames output from MIDL compile step that isn't

-    quietable via command line flags.

-    """

-    args = ['midl', '/nologo'] + list(flags) + [

-        '/out', outdir,

-        '/tlb', tlb,

-        '/h', h,

-        '/dlldata', dlldata,

-        '/iid', iid,

-        '/proxy', proxy,

-        idl]

-    env = self._GetEnv(arch)

-    popen = subprocess.Popen(args, shell=True, env=env,

-                             stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

-    out, _ = popen.communicate()

-    # Filter junk out of stdout, and write filtered versions. Output we want

-    # to filter is pairs of lines that look like this:

-    # Processing C:\Program Files (x86)\Microsoft SDKs\...\include\objidl.idl

-    # objidl.idl

-    lines = out.splitlines()

-    prefixes = ('Processing ', '64 bit Processing ')

-    processing = set(os.path.basename(x)

-                     for x in lines if x.startswith(prefixes))

-    for line in lines:

-      if not line.startswith(prefixes) and line not in processing:

-        print line

-    return popen.returncode

-

-  def ExecAsmWrapper(self, arch, *args):

-    """Filter logo banner from invocations of asm.exe."""

-    env = self._GetEnv(arch)

-    # MSVS doesn't assemble x64 asm files.

-    if arch == 'environment.x64':

-      return 0

-    popen = subprocess.Popen(args, shell=True, env=env,

-                             stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

-    out, _ = popen.communicate()

-    for line in out.splitlines():

-      if (not line.startswith('Copyright (C) Microsoft Corporation') and

-          not line.startswith('Microsoft (R) Macro Assembler') and

-          not line.startswith(' Assembling: ') and

-          line):

-        print line

-    return popen.returncode

-

-  def ExecRcWrapper(self, arch, *args):

-    """Filter logo banner from invocations of rc.exe. Older versions of RC

-    don't support the /nologo flag."""

-    env = self._GetEnv(arch)

-    popen = subprocess.Popen(args, shell=True, env=env,

-                             stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

-    out, _ = popen.communicate()

-    for line in out.splitlines():

-      if (not line.startswith('Microsoft (R) Windows (R) Resource Compiler') and

-          not line.startswith('Copyright (C) Microsoft Corporation') and

-          line):

-        print line

-    return popen.returncode

-

-  def ExecActionWrapper(self, arch, rspfile, *dir):

-    """Runs an action command line from a response file using the environment

-    for |arch|. If |dir| is supplied, use that as the working directory."""

-    env = self._GetEnv(arch)

-    # TODO(scottmg): This is a temporary hack to get some specific variables

-    # through to actions that are set after gyp-time. http://crbug.com/333738.

-    for k, v in os.environ.iteritems():

-      if k not in env:

-        env[k] = v

-    args = open(rspfile).read()

-    dir = dir[0] if dir else None

-    return subprocess.call(args, shell=True, env=env, cwd=dir)

-

-  def ExecClCompile(self, project_dir, selected_files):

-    """Executed by msvs-ninja projects when the 'ClCompile' target is used to

-    build selected C/C++ files."""

-    project_dir = os.path.relpath(project_dir, BASE_DIR)

-    selected_files = selected_files.split(';')

-    ninja_targets = [os.path.join(project_dir, filename) + '^^'

-        for filename in selected_files]

-    cmd = ['ninja.exe']

-    cmd.extend(ninja_targets)

-    return subprocess.call(cmd, shell=True, cwd=BASE_DIR)

-

-if __name__ == '__main__':

-  sys.exit(main(sys.argv[1:]))

diff --git a/cc/BUILD.gn b/cc/BUILD.gn
index 292d476..f753895 100644
--- a/cc/BUILD.gn
+++ b/cc/BUILD.gn
@@ -286,6 +286,7 @@
     "quads/io_surface_draw_quad.cc",
     "quads/io_surface_draw_quad.h",
     "quads/largest_draw_quad.h",
+    "quads/largest_draw_quad.cc",
     "quads/list_container.cc",
     "quads/list_container.h",
     "quads/picture_draw_quad.cc",
@@ -692,6 +693,7 @@
     "layers/scrollbar_layer_unittest.cc",
     "layers/solid_color_layer_impl_unittest.cc",
     "layers/solid_color_scrollbar_layer_impl_unittest.cc",
+    "layers/surface_layer_unittest.cc",
     "layers/surface_layer_impl_unittest.cc",
     "layers/texture_layer_unittest.cc",
     "layers/texture_layer_impl_unittest.cc",
diff --git a/cc/base/switches.cc b/cc/base/switches.cc
index 5bfa6ae..27e63b5 100644
--- a/cc/base/switches.cc
+++ b/cc/base/switches.cc
@@ -72,7 +72,9 @@
 const char kShowCompositedLayerBorders[] = "show-composited-layer-borders";
 const char kUIShowCompositedLayerBorders[] = "ui-show-layer-borders";
 
-// Draws a FPS indicator
+// Draws a heads-up-display showing Frames Per Second as well as GPU memory
+// usage. If you also use --vmodule="head*=1" then FPS will also be output to
+// the console log.
 const char kShowFPSCounter[] = "show-fps-counter";
 const char kUIShowFPSCounter[] = "ui-show-fps-counter";
 
diff --git a/cc/cc.gyp b/cc/cc.gyp
index 3c457f9..308a61d 100644
--- a/cc/cc.gyp
+++ b/cc/cc.gyp
@@ -321,6 +321,7 @@
         'quads/io_surface_draw_quad.cc',
         'quads/io_surface_draw_quad.h',
         'quads/largest_draw_quad.h',
+        'quads/largest_draw_quad.cc',
         'quads/list_container.cc',
         'quads/list_container.h',
         'quads/picture_draw_quad.cc',
diff --git a/cc/cc_tests.gyp b/cc/cc_tests.gyp
index 1300d32..75267ef 100644
--- a/cc/cc_tests.gyp
+++ b/cc/cc_tests.gyp
@@ -50,6 +50,7 @@
       'layers/scrollbar_layer_unittest.cc',
       'layers/solid_color_layer_impl_unittest.cc',
       'layers/solid_color_scrollbar_layer_impl_unittest.cc',
+      'layers/surface_layer_unittest.cc',
       'layers/surface_layer_impl_unittest.cc',
       'layers/texture_layer_unittest.cc',
       'layers/texture_layer_impl_unittest.cc',
diff --git a/cc/debug/paint_time_counter.cc b/cc/debug/paint_time_counter.cc
index 7d54154..41ef1a3 100644
--- a/cc/debug/paint_time_counter.cc
+++ b/cc/debug/paint_time_counter.cc
@@ -11,18 +11,11 @@
   return make_scoped_ptr(new PaintTimeCounter());
 }
 
-PaintTimeCounter::PaintTimeCounter()
-  : can_save_paint_time_delta_(false) {
+PaintTimeCounter::PaintTimeCounter() {
 }
 
-void PaintTimeCounter::SavePaintTime(const base::TimeDelta& total_paint_time) {
-  if (can_save_paint_time_delta_) {
-    base::TimeDelta paint_time = total_paint_time - last_total_paint_time_;
-    ring_buffer_.SaveToBuffer(paint_time);
-  }
-
-  last_total_paint_time_ = total_paint_time;
-  can_save_paint_time_delta_ = true;
+void PaintTimeCounter::SavePaintTime(const base::TimeDelta& paint_time) {
+  ring_buffer_.SaveToBuffer(paint_time);
 }
 
 void PaintTimeCounter::GetMinAndMaxPaintTime(base::TimeDelta* min,
@@ -45,7 +38,6 @@
 
 void PaintTimeCounter::ClearHistory() {
   ring_buffer_.Clear();
-  can_save_paint_time_delta_ = false;
 }
 
 }  // namespace cc
diff --git a/cc/debug/paint_time_counter.h b/cc/debug/paint_time_counter.h
index 8d109d0..c93980b 100644
--- a/cc/debug/paint_time_counter.h
+++ b/cc/debug/paint_time_counter.h
@@ -36,8 +36,6 @@
   PaintTimeCounter();
 
   RingBufferType ring_buffer_;
-  base::TimeDelta last_total_paint_time_;
-  bool can_save_paint_time_delta_;
 
   DISALLOW_COPY_AND_ASSIGN(PaintTimeCounter);
 };
diff --git a/cc/debug/rasterize_and_record_benchmark_impl.cc b/cc/debug/rasterize_and_record_benchmark_impl.cc
index b984655..2ffac1b 100644
--- a/cc/debug/rasterize_and_record_benchmark_impl.cc
+++ b/cc/debug/rasterize_and_record_benchmark_impl.cc
@@ -56,10 +56,10 @@
         SkCanvas canvas(bitmap);
         RasterSource::SolidColorAnalysis analysis;
 
-        raster_source_->PerformSolidColorAnalysis(
-            content_rect_, contents_scale_, &analysis, nullptr);
-        raster_source_->PlaybackToCanvas(
-            &canvas, content_rect_, contents_scale_, nullptr);
+        raster_source_->PerformSolidColorAnalysis(content_rect_,
+                                                  contents_scale_, &analysis);
+        raster_source_->PlaybackToCanvas(&canvas, content_rect_,
+                                         contents_scale_);
 
         is_solid_color_ = analysis.is_solid_color;
 
diff --git a/cc/debug/rendering_stats.cc b/cc/debug/rendering_stats.cc
index d0668da..558c882 100644
--- a/cc/debug/rendering_stats.cc
+++ b/cc/debug/rendering_stats.cc
@@ -28,6 +28,10 @@
   values.insert(values.end(), other.values.begin(), other.values.end());
 }
 
+base::TimeDelta RenderingStats::TimeDeltaList::GetLastTimeDelta() const {
+  return values.empty() ? base::TimeDelta() : values.back();
+}
+
 RenderingStats::MainThreadRenderingStats::MainThreadRenderingStats()
     : painted_pixel_count(0), recorded_pixel_count(0) {
 }
@@ -56,7 +60,6 @@
 
 RenderingStats::ImplThreadRenderingStats::ImplThreadRenderingStats()
     : frame_count(0),
-      rasterized_pixel_count(0),
       visible_content_area(0),
       approximated_visible_content_area(0) {
 }
@@ -69,8 +72,6 @@
   scoped_refptr<base::debug::TracedValue> record_data =
       new base::debug::TracedValue();
   record_data->SetInteger("frame_count", frame_count);
-  record_data->SetDouble("rasterize_time", rasterize_time.InSecondsF());
-  record_data->SetInteger("rasterized_pixel_count", rasterized_pixel_count);
   record_data->SetInteger("visible_content_area", visible_content_area);
   record_data->SetInteger("approximated_visible_content_area",
                           approximated_visible_content_area);
@@ -104,9 +105,6 @@
 void RenderingStats::ImplThreadRenderingStats::Add(
     const ImplThreadRenderingStats& other) {
   frame_count += other.frame_count;
-  rasterize_time += other.rasterize_time;
-  analysis_time += other.analysis_time;
-  rasterized_pixel_count += other.rasterized_pixel_count;
   visible_content_area += other.visible_content_area;
   approximated_visible_content_area += other.approximated_visible_content_area;
 
diff --git a/cc/debug/rendering_stats.h b/cc/debug/rendering_stats.h
index 52560e2..7b1898a 100644
--- a/cc/debug/rendering_stats.h
+++ b/cc/debug/rendering_stats.h
@@ -28,6 +28,8 @@
 
     void Add(const TimeDeltaList& other);
 
+    base::TimeDelta GetLastTimeDelta() const;
+
    private:
     std::list<base::TimeDelta> values;
   };
@@ -53,9 +55,6 @@
     // rendering_stats.cc.
 
     int64 frame_count;
-    base::TimeDelta rasterize_time;
-    base::TimeDelta analysis_time;
-    int64 rasterized_pixel_count;
     int64 visible_content_area;
     int64 approximated_visible_content_area;
 
diff --git a/cc/debug/rendering_stats_instrumentation.cc b/cc/debug/rendering_stats_instrumentation.cc
index fb7ec52..f5f2e07 100644
--- a/cc/debug/rendering_stats_instrumentation.cc
+++ b/cc/debug/rendering_stats_instrumentation.cc
@@ -99,25 +99,6 @@
   main_thread_rendering_stats_.recorded_pixel_count += pixels;
 }
 
-void RenderingStatsInstrumentation::AddRaster(base::TimeDelta duration,
-                                              int64 pixels) {
-  if (!record_rendering_stats_)
-    return;
-
-  base::AutoLock scoped_lock(lock_);
-  impl_thread_rendering_stats_.rasterize_time += duration;
-  impl_thread_rendering_stats_.rasterized_pixel_count += pixels;
-}
-
-void RenderingStatsInstrumentation::AddAnalysis(base::TimeDelta duration,
-                                                int64 pixels) {
-  if (!record_rendering_stats_)
-    return;
-
-  base::AutoLock scoped_lock(lock_);
-  impl_thread_rendering_stats_.analysis_time += duration;
-}
-
 void RenderingStatsInstrumentation::AddVisibleContentArea(int64 area) {
   if (!record_rendering_stats_)
     return;
diff --git a/cc/debug/rendering_stats_instrumentation.h b/cc/debug/rendering_stats_instrumentation.h
index fd7f5c9..734583a 100644
--- a/cc/debug/rendering_stats_instrumentation.h
+++ b/cc/debug/rendering_stats_instrumentation.h
@@ -50,8 +50,6 @@
   void IncrementFrameCount(int64 count);
   void AddPaint(base::TimeDelta duration, int64 pixels);
   void AddRecord(base::TimeDelta duration, int64 pixels);
-  void AddRaster(base::TimeDelta duration, int64 pixels);
-  void AddAnalysis(base::TimeDelta duration, int64 pixels);
   void AddVisibleContentArea(int64 area);
   void AddApproximatedVisibleContentArea(int64 area);
   void AddDrawDuration(base::TimeDelta draw_duration,
diff --git a/cc/layers/delegated_renderer_layer_impl_unittest.cc b/cc/layers/delegated_renderer_layer_impl_unittest.cc
index 3fb1c48..5a797f9 100644
--- a/cc/layers/delegated_renderer_layer_impl_unittest.cc
+++ b/cc/layers/delegated_renderer_layer_impl_unittest.cc
@@ -13,7 +13,6 @@
 #include "cc/test/fake_layer_tree_host_impl_client.h"
 #include "cc/test/fake_output_surface.h"
 #include "cc/test/fake_proxy.h"
-#include "cc/test/fake_rendering_stats_instrumentation.h"
 #include "cc/test/geometry_test_utils.h"
 #include "cc/test/layer_test_common.h"
 #include "cc/test/render_pass_test_common.h"
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc
index 0692139..bb68571 100644
--- a/cc/layers/heads_up_display_layer_impl.cc
+++ b/cc/layers/heads_up_display_layer_impl.cc
@@ -385,6 +385,8 @@
   const std::string min_max_text =
       base::StringPrintf("%.0f-%.0f", fps_graph_.min, fps_graph_.max);
 
+  VLOG(1) << value_text;
+
   paint.setColor(DebugColors::FPSDisplayTextAndGraphColor());
   DrawText(canvas,
            &paint,
@@ -565,13 +567,8 @@
       "%.1f-%.1f", paint_time_graph_.min, paint_time_graph_.max);
 
   paint.setColor(DebugColors::PaintTimeDisplayTextAndGraphColor());
-  DrawText(canvas,
-           &paint,
-           "Page paint time (ms)",
-           SkPaint::kLeft_Align,
-           kFontHeight,
-           text_bounds.left(),
-           text_bounds.bottom());
+  DrawText(canvas, &paint, "Compositor frame time (ms)", SkPaint::kLeft_Align,
+           kFontHeight, text_bounds.left(), text_bounds.bottom());
   DrawText(canvas,
            &paint,
            value_text,
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 2b11933..f09761b 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -397,23 +397,22 @@
 }
 
 void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() {
+  if (sent_scroll_delta_.IsZero())
+    return;
+
   // Pending tree never has sent scroll deltas
   DCHECK(layer_tree_impl()->IsActiveTree());
 
+  // The combination of pending tree and aborted commits with impl scrolls
+  // shouldn't happen; we don't know how to update its deltas correctly.
+  DCHECK(!layer_tree_impl()->FindPendingTreeLayerById(id()));
+
   // Apply sent scroll deltas to scroll position / scroll delta as if the
   // main thread had applied them and then committed those values.
-  //
-  // This function should not change the total scroll offset; it just shifts
-  // some of the scroll delta to the scroll offset.  Therefore, adjust these
-  // variables directly rather than calling the scroll offset delegate to
-  // avoid sending it multiple spurious calls.
-  //
-  // Because of the way scroll delta is calculated with a delegate, this will
-  // leave the total scroll offset unchanged on this layer regardless of
-  // whether a delegate is being used.
-  scroll_offset_ += gfx::ScrollOffset(sent_scroll_delta_);
-  scroll_delta_ -= sent_scroll_delta_;
-  sent_scroll_delta_ = gfx::Vector2dF();
+  SetScrollOffsetAndDelta(
+      scroll_offset_ + gfx::ScrollOffset(sent_scroll_delta_),
+      ScrollDelta() - sent_scroll_delta_);
+  SetSentScrollDelta(gfx::Vector2dF());
 }
 
 void LayerImpl::ApplyScrollDeltasSinceBeginMainFrame() {
@@ -550,10 +549,14 @@
                                                : Layer::INVALID_ID);
   layer->set_user_scrollable_horizontal(user_scrollable_horizontal_);
   layer->set_user_scrollable_vertical(user_scrollable_vertical_);
-  layer->SetScrollOffsetAndDelta(
-      scroll_offset_,
-      layer->ScrollDelta() - layer->sent_scroll_delta());
+
+  // Save the difference but clear the sent delta so that we don't subtract
+  // it again in SetScrollOffsetAndDelta's pending twin mirroring logic.
+  gfx::Vector2dF remaining_delta =
+      layer->ScrollDelta() - layer->sent_scroll_delta();
   layer->SetSentScrollDelta(gfx::Vector2dF());
+  layer->SetScrollOffsetAndDelta(scroll_offset_, remaining_delta);
+
   layer->Set3dSortingContextId(sorting_context_id_);
   layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_);
 
diff --git a/cc/layers/layer_impl_unittest.cc b/cc/layers/layer_impl_unittest.cc
index 99673f6..c61f2c2 100644
--- a/cc/layers/layer_impl_unittest.cc
+++ b/cc/layers/layer_impl_unittest.cc
@@ -434,6 +434,8 @@
     return host_impl_.active_tree()->root_layer()->children()[0];
   }
 
+  LayerTreeHostImpl& host_impl() { return host_impl_; }
+
   LayerTreeImpl* tree() { return host_impl_.active_tree(); }
 
   LayerTreeSettings settings() {
@@ -497,7 +499,13 @@
 
 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate {
  public:
-  void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override {}
+  void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override {
+    last_attempted_set_offset_ = new_value;
+  }
+  gfx::ScrollOffset last_attempted_set_offset() const {
+    return last_attempted_set_offset_;
+  }
+
   gfx::ScrollOffset GetTotalScrollOffset() override {
     return gfx::ScrollOffset(fixed_offset_);
   }
@@ -509,6 +517,7 @@
   }
 
  private:
+  gfx::ScrollOffset last_attempted_set_offset_;
   gfx::Vector2dF fixed_offset_;
 };
 
@@ -632,6 +641,8 @@
 
   layer()->ApplySentScrollDeltasFromAbortedCommit();
 
+  EXPECT_VECTOR_EQ(fixed_offset, delegate.last_attempted_set_offset());
+
   EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset());
   EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta),
                    layer()->scroll_offset());
@@ -675,6 +686,31 @@
   EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset());
 }
 
+TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsTotalScrollOffset) {
+  gfx::ScrollOffset scroll_offset(10, 5);
+  gfx::Vector2dF scroll_delta(12, 18);
+
+  host_impl().CreatePendingTree();
+
+  layer()->SetScrollOffset(scroll_offset);
+  gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta);
+
+  EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled);
+  EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset());
+
+  layer()->SetSentScrollDelta(scroll_delta);
+
+  scoped_ptr<LayerImpl> pending_layer =
+      LayerImpl::Create(host_impl().sync_tree(), layer()->id());
+  pending_layer->SetScrollOffset(layer()->TotalScrollOffset());
+
+  pending_layer->PushPropertiesTo(layer());
+
+  EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset());
+  EXPECT_VECTOR_EQ(layer()->TotalScrollOffset(),
+                   pending_layer->TotalScrollOffset());
+}
+
 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) {
   gfx::ScrollOffset scroll_offset(10, 5);
   layer()->SetScrollOffset(scroll_offset);
diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
index f608ba7..c56ff8b 100644
--- a/cc/layers/picture_layer.cc
+++ b/cc/layers/picture_layer.cc
@@ -35,16 +35,22 @@
   Layer::PushPropertiesTo(base_layer);
   PictureLayerImpl* layer_impl = static_cast<PictureLayerImpl*>(base_layer);
 
-  if (layer_impl->bounds().IsEmpty()) {
-    // Update may not get called for an empty layer, so resize here instead.
-    // Using layer_impl because either bounds() or paint_properties().bounds
-    // may disagree and either one could have been pushed to layer_impl.
+  int source_frame_number = layer_tree_host()->source_frame_number();
+  gfx::Size impl_bounds = layer_impl->bounds();
+  gfx::Size pile_bounds = pile_.tiling_size();
+
+  // If update called, then pile size must match bounds pushed to impl layer.
+  DCHECK_IMPLIES(update_source_frame_number_ == source_frame_number,
+                 impl_bounds == pile_bounds)
+      << " bounds " << impl_bounds.ToString() << " pile "
+      << pile_bounds.ToString();
+
+  if (update_source_frame_number_ != source_frame_number &&
+      pile_bounds != impl_bounds) {
+    // Update may not get called for the layer (if it's not in the viewport
+    // for example, even though it has resized making the pile no longer
+    // valid. In this case just destroy the pile.
     pile_.SetEmptyBounds();
-  } else {
-    // If update called, then pile size must match bounds pushed to impl layer.
-    DCHECK_IMPLIES(
-        update_source_frame_number_ == layer_tree_host()->source_frame_number(),
-        layer_impl->bounds().ToString() == pile_.tiling_size().ToString());
   }
 
   // Unlike other properties, invalidation must always be set on layer_impl.
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index c3c7ca0..f9678cc 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -173,10 +173,11 @@
                                    AppendQuadsData* append_quads_data) {
   DCHECK(!needs_post_commit_initialization_);
   // The bounds and the pile size may differ if the pile wasn't updated (ie.
-  // PictureLayer::Update didn't happen). But that should never be the case if
-  // the layer is part of the visible frame, which is why we're appending quads
-  // in the first place
-  DCHECK_EQ(bounds().ToString(), pile_->tiling_size().ToString());
+  // PictureLayer::Update didn't happen). In that case the pile will be empty.
+  DCHECK_IMPLIES(!pile_->tiling_size().IsEmpty(),
+                 bounds() == pile_->tiling_size())
+      << " bounds " << bounds().ToString() << " pile "
+      << pile_->tiling_size().ToString();
 
   SharedQuadState* shared_quad_state =
       render_pass->CreateAndAppendSharedQuadState();
@@ -468,7 +469,6 @@
 
 void PictureLayerImpl::UpdateTiles(const Occlusion& occlusion_in_content_space,
                                    bool resourceless_software_draw) {
-  TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTiles");
   DCHECK_EQ(1.f, contents_scale_x());
   DCHECK_EQ(1.f, contents_scale_y());
 
@@ -516,9 +516,6 @@
 void PictureLayerImpl::UpdateTilePriorities(
     const Occlusion& occlusion_in_content_space) {
   DCHECK(!pile_->is_solid_color() || !tilings_->num_tilings());
-
-  TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities");
-
   double current_frame_time_in_seconds =
       (layer_tree_impl()->CurrentBeginFrameArgs().frame_time -
        base::TimeTicks()).InSecondsF();
@@ -790,7 +787,6 @@
 }
 
 void PictureLayerImpl::SyncFromActiveLayer(const PictureLayerImpl* other) {
-  TRACE_EVENT0("cc", "SyncFromActiveLayer");
   DCHECK(!other->needs_post_commit_initialization_);
   DCHECK(other->tilings_);
 
@@ -1087,9 +1083,6 @@
         raster_contents_scale_ / raster_device_scale_ / raster_source_scale_;
   }
 
-  raster_contents_scale_ =
-      std::max(raster_contents_scale_, MinimumContentsScale());
-
   // If we're not re-rasterizing during animation, rasterize at the maximum
   // scale that will occur during the animation, if the maximum scale is
   // known. However we want to avoid excessive memory use. If the scale is
@@ -1121,6 +1114,9 @@
       raster_contents_scale_ = 1.f * ideal_page_scale_ * ideal_device_scale_;
   }
 
+  raster_contents_scale_ =
+      std::max(raster_contents_scale_, MinimumContentsScale());
+
   // If this layer would create zero or one tiles at this content scale,
   // don't create a low res tiling.
   gfx::Size raster_bounds = gfx::ToCeiledSize(
@@ -1138,6 +1134,8 @@
   low_res_raster_contents_scale_ = std::max(
       raster_contents_scale_ * low_res_factor,
       MinimumContentsScale());
+  DCHECK_LE(low_res_raster_contents_scale_, raster_contents_scale_);
+  DCHECK_GE(low_res_raster_contents_scale_, MinimumContentsScale());
 }
 
 void PictureLayerImpl::CleanUpTilingsOnActiveLayer(
@@ -1406,8 +1404,6 @@
 }
 
 bool PictureLayerImpl::AllTilesRequiredForActivationAreReadyToDraw() const {
-  TRACE_EVENT0("cc",
-               "PictureLayerImpl::AllTilesRequiredForActivationAreReadyToDraw");
   if (!layer_tree_impl()->IsPendingTree())
     return true;
 
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 6b2d4c9..a46386c 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -268,8 +268,8 @@
     std::vector<SkRect>::const_iterator rect_iter = rects.begin();
     for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) {
       MockCanvas mock_canvas(1000, 1000);
-      active_pile->RasterDirect(
-          &mock_canvas, (*tile_iter)->content_rect(), 1.0f, nullptr);
+      active_pile->RasterDirect(&mock_canvas, (*tile_iter)->content_rect(),
+                                1.0f);
 
       // This test verifies that when drawing the contents of a specific tile
       // at content scale 1.0, the playback canvas never receives content from
diff --git a/cc/layers/picture_layer_unittest.cc b/cc/layers/picture_layer_unittest.cc
index 78182d9..ca622aa 100644
--- a/cc/layers/picture_layer_unittest.cc
+++ b/cc/layers/picture_layer_unittest.cc
@@ -43,6 +43,10 @@
   scoped_ptr<ResourceUpdateQueue> queue(new ResourceUpdateQueue);
   layer->Update(queue.get(), &occlusion);
 
+  EXPECT_EQ(0, host->source_frame_number());
+  host->CommitComplete();
+  EXPECT_EQ(1, host->source_frame_number());
+
   layer->SetBounds(gfx::Size(0, 0));
   layer->SavePaintProperties();
   // Intentionally skipping Update since it would normally be skipped on
diff --git a/cc/layers/surface_layer.cc b/cc/layers/surface_layer.cc
index ba577a0..f1909b4 100644
--- a/cc/layers/surface_layer.cc
+++ b/cc/layers/surface_layer.cc
@@ -4,21 +4,60 @@
 
 #include "cc/layers/surface_layer.h"
 
+#include "cc/base/swap_promise.h"
 #include "cc/layers/surface_layer_impl.h"
+#include "cc/trees/layer_tree_host.h"
 
 namespace cc {
 
-scoped_refptr<SurfaceLayer> SurfaceLayer::Create() {
-  return make_scoped_refptr(new SurfaceLayer);
+class SatisfySwapPromise : public SwapPromise {
+ public:
+  SatisfySwapPromise(SurfaceSequence sequence,
+                     const SurfaceLayer::SatisfyCallback& satisfy_callback)
+      : sequence_(sequence), satisfy_callback_(satisfy_callback) {}
+
+  ~SatisfySwapPromise() override {}
+
+ private:
+  void DidSwap(CompositorFrameMetadata* metadata) override {
+    metadata->satisfies_sequences.push_back(sequence_.sequence);
+  }
+
+  void DidNotSwap(DidNotSwapReason reason) override {
+    satisfy_callback_.Run(sequence_);
+  }
+  int64 TraceId() const override { return 0; }
+
+  SurfaceSequence sequence_;
+  SurfaceLayer::SatisfyCallback satisfy_callback_;
+
+  DISALLOW_COPY_AND_ASSIGN(SatisfySwapPromise);
+};
+
+scoped_refptr<SurfaceLayer> SurfaceLayer::Create(
+    const SatisfyCallback& satisfy_callback,
+    const RequireCallback& require_callback) {
+  return make_scoped_refptr(
+      new SurfaceLayer(satisfy_callback, require_callback));
 }
 
-SurfaceLayer::SurfaceLayer() : Layer() {
+SurfaceLayer::SurfaceLayer(const SatisfyCallback& satisfy_callback,
+                           const RequireCallback& require_callback)
+    : Layer(),
+      satisfy_callback_(satisfy_callback),
+      require_callback_(require_callback) {
 }
 
-SurfaceLayer::~SurfaceLayer() {}
+SurfaceLayer::~SurfaceLayer() {
+  DCHECK(!layer_tree_host());
+  DCHECK(destroy_sequence_.is_null());
+}
 
 void SurfaceLayer::SetSurfaceId(SurfaceId surface_id) {
+  SatisfyDestroySequence();
   surface_id_ = surface_id;
+  CreateNewDestroySequence();
+
   UpdateDrawsContent(HasDrawableContent());
   SetNeedsPushProperties();
 }
@@ -31,6 +70,17 @@
   return !surface_id_.is_null() && Layer::HasDrawableContent();
 }
 
+void SurfaceLayer::SetLayerTreeHost(LayerTreeHost* host) {
+  if (layer_tree_host() == host) {
+    Layer::SetLayerTreeHost(host);
+    return;
+  }
+
+  SatisfyDestroySequence();
+  Layer::SetLayerTreeHost(host);
+  CreateNewDestroySequence();
+}
+
 void SurfaceLayer::PushPropertiesTo(LayerImpl* layer) {
   Layer::PushPropertiesTo(layer);
   SurfaceLayerImpl* layer_impl = static_cast<SurfaceLayerImpl*>(layer);
@@ -38,4 +88,22 @@
   layer_impl->SetSurfaceId(surface_id_);
 }
 
+void SurfaceLayer::CreateNewDestroySequence() {
+  DCHECK(destroy_sequence_.is_null());
+  if (layer_tree_host()) {
+    destroy_sequence_ = layer_tree_host()->CreateSurfaceSequence();
+    require_callback_.Run(surface_id_, destroy_sequence_);
+  }
+}
+
+void SurfaceLayer::SatisfyDestroySequence() {
+  if (!layer_tree_host())
+    return;
+  DCHECK(!destroy_sequence_.is_null());
+  scoped_ptr<SatisfySwapPromise> satisfy(
+      new SatisfySwapPromise(destroy_sequence_, satisfy_callback_));
+  layer_tree_host()->QueueSwapPromise(satisfy.Pass());
+  destroy_sequence_ = SurfaceSequence();
+}
+
 }  // namespace cc
diff --git a/cc/layers/surface_layer.h b/cc/layers/surface_layer.h
index 0b886eb..4292549 100644
--- a/cc/layers/surface_layer.h
+++ b/cc/layers/surface_layer.h
@@ -8,6 +8,7 @@
 #include "cc/base/cc_export.h"
 #include "cc/layers/layer.h"
 #include "cc/surfaces/surface_id.h"
+#include "cc/surfaces/surface_sequence.h"
 
 namespace cc {
 
@@ -15,22 +16,40 @@
 // instance or client.
 class CC_EXPORT SurfaceLayer : public Layer {
  public:
-  static scoped_refptr<SurfaceLayer> Create();
+  // This callback is run when a SurfaceSequence needs to be satisfied, but
+  // the parent compositor is unable to. It can be called on either the main
+  // or impl threads.
+  using SatisfyCallback = base::Callback<void(SurfaceSequence)>;
+
+  // This callback is run to require that a specific SurfaceSequence is
+  // received before a SurfaceId is destroyed.
+  using RequireCallback = base::Callback<void(SurfaceId, SurfaceSequence)>;
+
+  static scoped_refptr<SurfaceLayer> Create(
+      const SatisfyCallback& satisfy_callback,
+      const RequireCallback& require_callback);
 
   void SetSurfaceId(SurfaceId surface_id);
 
   // Layer overrides.
   scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
+  void SetLayerTreeHost(LayerTreeHost* host) override;
   void PushPropertiesTo(LayerImpl* layer) override;
 
  protected:
-  SurfaceLayer();
+  SurfaceLayer(const SatisfyCallback& satisfy_callback,
+               const RequireCallback& require_callback);
   bool HasDrawableContent() const override;
 
  private:
   ~SurfaceLayer() override;
+  void CreateNewDestroySequence();
+  void SatisfyDestroySequence();
 
   SurfaceId surface_id_;
+  SurfaceSequence destroy_sequence_;
+  SatisfyCallback satisfy_callback_;
+  RequireCallback require_callback_;
 
   DISALLOW_COPY_AND_ASSIGN(SurfaceLayer);
 };
diff --git a/cc/layers/surface_layer_unittest.cc b/cc/layers/surface_layer_unittest.cc
new file mode 100644
index 0000000..99d0e17
--- /dev/null
+++ b/cc/layers/surface_layer_unittest.cc
@@ -0,0 +1,206 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/message_loop/message_loop_proxy.h"
+#include "cc/layers/solid_color_layer.h"
+#include "cc/layers/surface_layer.h"
+#include "cc/test/fake_impl_proxy.h"
+#include "cc/test/fake_layer_tree_host.h"
+#include "cc/test/fake_layer_tree_host_client.h"
+#include "cc/test/fake_layer_tree_host_impl.h"
+#include "cc/test/fake_output_surface.h"
+#include "cc/test/layer_tree_test.h"
+#include "cc/test/test_shared_bitmap_manager.h"
+#include "cc/trees/layer_tree_host.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace cc {
+namespace {
+
+class SurfaceLayerTest : public testing::Test {
+ public:
+  SurfaceLayerTest()
+      : fake_client_(
+            FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D)) {}
+
+ protected:
+  virtual void SetUp() {
+    layer_tree_host_ = FakeLayerTreeHost::Create(&fake_client_);
+    layer_tree_host_->SetViewportSize(gfx::Size(10, 10));
+  }
+
+  virtual void TearDown() {
+    if (layer_tree_host_) {
+      layer_tree_host_->SetRootLayer(nullptr);
+      layer_tree_host_ = nullptr;
+    }
+  }
+
+  scoped_ptr<FakeLayerTreeHost> layer_tree_host_;
+  FakeLayerTreeHostClient fake_client_;
+  TestSharedBitmapManager shared_bitmap_manager_;
+};
+
+void SatisfyCallback(SurfaceSequence* out, SurfaceSequence in) {
+  *out = in;
+}
+
+void RequireCallback(SurfaceId* out_id,
+                     std::set<SurfaceSequence>* out,
+                     SurfaceId in_id,
+                     SurfaceSequence in) {
+  *out_id = in_id;
+  out->insert(in);
+}
+
+// Check that one surface can be referenced by multiple LayerTreeHosts, and
+// each will create its own SurfaceSequence that's satisfied on destruction.
+TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
+  SurfaceSequence blank_change;  // Receives sequence if commit doesn't happen.
+
+  SurfaceId required_id;
+  std::set<SurfaceSequence> required_seq;
+  scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create(
+      base::Bind(&SatisfyCallback, &blank_change),
+      base::Bind(&RequireCallback, &required_id, &required_seq)));
+  layer->SetSurfaceId(SurfaceId(1));
+  layer_tree_host_->set_surface_id_namespace(1);
+  layer_tree_host_->SetRootLayer(layer);
+
+  scoped_ptr<FakeLayerTreeHost> layer_tree_host2 =
+      FakeLayerTreeHost::Create(&fake_client_);
+  scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create(
+      base::Bind(&SatisfyCallback, &blank_change),
+      base::Bind(&RequireCallback, &required_id, &required_seq)));
+  layer2->SetSurfaceId(SurfaceId(1));
+  layer_tree_host2->set_surface_id_namespace(2);
+  layer_tree_host2->SetRootLayer(layer2);
+
+  // Layers haven't been removed, so no sequence should be satisfied.
+  EXPECT_TRUE(blank_change.is_null());
+
+  SurfaceSequence expected1(1u, 1u);
+  SurfaceSequence expected2(2u, 1u);
+
+  layer_tree_host2->SetRootLayer(nullptr);
+  layer_tree_host2.reset();
+
+  // Layer was removed so sequence from second LayerTreeHost should be
+  // satisfied.
+  EXPECT_TRUE(blank_change == expected2);
+
+  // Set of sequences that need to be satisfied should include sequences from
+  // both trees.
+  EXPECT_TRUE(required_id == SurfaceId(1));
+  EXPECT_EQ(2u, required_seq.size());
+  EXPECT_TRUE(required_seq.count(expected1));
+  EXPECT_TRUE(required_seq.count(expected2));
+
+  layer_tree_host_->SetRootLayer(nullptr);
+  layer_tree_host_.reset();
+
+  // Layer was removed so sequence from first LayerTreeHost should be
+  // satisfied.
+  EXPECT_TRUE(blank_change == expected1);
+
+  // No more SurfaceSequences should have been generated that need to have be
+  // satisfied.
+  EXPECT_EQ(2u, required_seq.size());
+}
+
+// Check that SurfaceSequence is sent through swap promise.
+class SurfaceLayerSwapPromise : public LayerTreeTest {
+ public:
+  SurfaceLayerSwapPromise()
+      : commit_count_(0), sequence_was_satisfied_(false) {}
+
+  void BeginTest() override {
+    layer_tree_host()->set_surface_id_namespace(1);
+    layer_ = SurfaceLayer::Create(
+        base::Bind(&SatisfyCallback, &satisfied_sequence_),
+        base::Bind(&RequireCallback, &required_id_, &required_set_));
+    layer_->SetSurfaceId(SurfaceId(1));
+
+    // Layer hasn't been added to tree so no SurfaceSequence generated yet.
+    EXPECT_EQ(0u, required_set_.size());
+
+    layer_tree_host()->SetRootLayer(layer_);
+
+    // Should have SurfaceSequence from first tree.
+    SurfaceSequence expected(1u, 1u);
+    EXPECT_TRUE(required_id_ == SurfaceId(1));
+    EXPECT_EQ(1u, required_set_.size());
+    EXPECT_TRUE(required_set_.count(expected));
+
+    gfx::Size bounds(100, 100);
+    layer_tree_host()->SetViewportSize(bounds);
+    PostSetNeedsCommitToMainThread();
+  }
+
+  void DidCommit() override {
+    base::MessageLoopProxy::current()->PostTask(
+        FROM_HERE, base::Bind(&SurfaceLayerSwapPromise::ChangeTree,
+                              base::Unretained(this)));
+  }
+
+  void ChangeTree() {
+    ++commit_count_;
+    switch (commit_count_) {
+      case 1:
+        // Remove SurfaceLayer from tree to cause SwapPromise to be created.
+        blank_layer_ = SolidColorLayer::Create();
+        blank_layer_->SetIsDrawable(true);
+        blank_layer_->SetBounds(gfx::Size(10, 10));
+        layer_tree_host()->SetRootLayer(blank_layer_);
+        break;
+      case 2:
+        break;
+      default:
+        NOTREACHED();
+        break;
+    }
+  }
+
+  void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override {
+    EXPECT_TRUE(result);
+    std::vector<uint32_t>& satisfied =
+        output_surface()->last_sent_frame().metadata.satisfies_sequences;
+    EXPECT_LE(satisfied.size(), 1u);
+    if (satisfied.size() == 1) {
+      // Eventually the one SurfaceSequence should be satisfied, but only
+      // after the layer was removed from the tree, and only once.
+      EXPECT_EQ(1u, satisfied[0]);
+      EXPECT_LE(1, commit_count_);
+      EXPECT_FALSE(sequence_was_satisfied_);
+      sequence_was_satisfied_ = true;
+      EndTest();
+    }
+  }
+
+  void AfterTest() override {
+    EXPECT_TRUE(required_id_ == SurfaceId(1));
+    EXPECT_EQ(1u, required_set_.size());
+    // Sequence should have been satisfied through Swap, not with the
+    // callback.
+    EXPECT_TRUE(satisfied_sequence_.is_null());
+  }
+
+ private:
+  int commit_count_;
+  bool sequence_was_satisfied_;
+  scoped_refptr<SurfaceLayer> layer_;
+  scoped_refptr<Layer> blank_layer_;
+  SurfaceSequence satisfied_sequence_;
+
+  SurfaceId required_id_;
+  std::set<SurfaceSequence> required_set_;
+};
+
+// TODO(jbauman): Reenable on single thread once http://crbug.com/421923 is
+// fixed.
+MULTI_THREAD_TEST_F(SurfaceLayerSwapPromise);
+
+}  // namespace
+}  // namespace cc
diff --git a/cc/layers/tiled_layer_unittest.cc b/cc/layers/tiled_layer_unittest.cc
index 0f3112c..9c814be 100644
--- a/cc/layers/tiled_layer_unittest.cc
+++ b/cc/layers/tiled_layer_unittest.cc
@@ -18,7 +18,6 @@
 #include "cc/test/fake_output_surface.h"
 #include "cc/test/fake_output_surface_client.h"
 #include "cc/test/fake_proxy.h"
-#include "cc/test/fake_rendering_stats_instrumentation.h"
 #include "cc/test/geometry_test_utils.h"
 #include "cc/test/test_shared_bitmap_manager.h"
 #include "cc/test/tiled_layer_test_common.h"
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
index a73c4af..4eb1324 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -869,7 +869,7 @@
 GLRenderer::ApplyInverseTransformForBackgroundFilters(
     DrawingFrame* frame,
     const RenderPassDrawQuad* quad,
-    const gfx::Transform& contents_device_transform_inverse,
+    const gfx::Transform& contents_device_transform,
     skia::RefPtr<SkImage> filtered_device_background,
     const gfx::Rect& backdrop_bounding_rect) {
   // This method draws a background filter, which applies a filter to any pixels
@@ -914,6 +914,12 @@
   if (using_background_texture) {
     // Copy the readback pixels from device to the background texture for the
     // surface.
+
+    gfx::Transform contents_device_transform_inverse(
+        gfx::Transform::kSkipInitialization);
+    bool did_invert = contents_device_transform.GetInverse(
+        &contents_device_transform_inverse);
+    DCHECK(did_invert);
     gfx::Transform device_to_framebuffer_transform;
     QuadRectTransform(
         &device_to_framebuffer_transform, gfx::Transform(), quad->rect);
@@ -964,20 +970,18 @@
   contents_device_transform.FlattenTo2d();
 
   // Can only draw surface if device matrix is invertible.
-  gfx::Transform contents_device_transform_inverse(
-      gfx::Transform::kSkipInitialization);
-  if (!contents_device_transform.GetInverse(&contents_device_transform_inverse))
+  if (!contents_device_transform.IsInvertible())
     return;
 
-  bool clipped = false;
-  gfx::QuadF device_quad = MathUtil::MapQuad(
-      contents_device_transform, SharedGeometryQuad(), &clipped);
-  // Use anti-aliasing programs only when necessary.
-  bool use_aa =
-      !clipped &&
-      (settings_->force_antialiasing || !device_quad.IsRectilinear() ||
-       !gfx::IsNearestRectWithinDistance(device_quad.BoundingBox(),
-                                         kAntiAliasingEpsilon));
+  gfx::QuadF surface_quad = SharedGeometryQuad();
+  float edge[24];
+  bool use_aa = settings_->allow_antialiasing &&
+                ShouldAntialiasQuad(contents_device_transform, quad,
+                                    settings_->force_antialiasing);
+
+  if (use_aa)
+    SetupQuadForAntialiasing(contents_device_transform, quad,
+                             &surface_quad, edge);
 
   bool need_background_texture = !CanApplyBlendModeUsingBlendFunc(blend_mode) ||
                                  ShouldApplyBackgroundFilters(frame, quad);
@@ -1020,10 +1024,7 @@
       // the quad since the destination texture has bounds matching the quad's
       // content.
       background_texture = ApplyInverseTransformForBackgroundFilters(
-          frame,
-          quad,
-          contents_device_transform_inverse,
-          background_with_filters,
+          frame, quad, contents_device_transform, background_with_filters,
           background_rect);
     } else if (!CanApplyBlendModeUsingBlendFunc(blend_mode)) {
       if (background_with_filters) {
@@ -1089,13 +1090,6 @@
                              flip_vertically);
   }
 
-  LayerQuad device_layer_bounds(gfx::QuadF(device_quad.BoundingBox()));
-  LayerQuad device_layer_edges(device_quad);
-  if (use_aa) {
-    device_layer_bounds.InflateAntiAliasingDistance();
-    device_layer_edges.InflateAntiAliasingDistance();
-  }
-
   scoped_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock;
   unsigned mask_texture_id = 0;
   SamplerType mask_sampler = SamplerTypeNA;
@@ -1359,12 +1353,8 @@
     last_texture_unit = 1;
   }
 
-  if (shader_edge_location != -1) {
-    float edge[24];
-    device_layer_edges.ToFloatArray(edge);
-    device_layer_bounds.ToFloatArray(&edge[12]);
+  if (shader_edge_location != -1)
     GLC(gl_, gl_->Uniform3fv(shader_edge_location, 8, edge));
-  }
 
   if (shader_viewport_location != -1) {
     float viewport[4] = {static_cast<float>(viewport_.x()),
@@ -1423,12 +1413,6 @@
     }
   }
 
-  // Map device space quad to surface space. contents_device_transform has no 3d
-  // component since it was flattened, so we don't need to project.
-  gfx::QuadF surface_quad = MathUtil::MapQuad(contents_device_transform_inverse,
-                                              device_layer_edges.ToQuadF(),
-                                              &clipped);
-
   SetShaderOpacity(quad->opacity(), shader_alpha_location);
   SetShaderQuadF(surface_quad, shader_quad_location);
   DrawQuadGeometry(
@@ -1463,41 +1447,16 @@
   uniforms->color_location = program->fragment_shader().color_location();
 }
 
-// static
-bool GLRenderer::SetupQuadForAntialiasing(
+static gfx::QuadF GetDeviceQuadWithAntialiasingOnExteriorEdges(
+    const LayerQuad& device_layer_edges,
     const gfx::Transform& device_transform,
-    const DrawQuad* quad,
-    gfx::QuadF* local_quad,
-    float edge[24]) {
+    const DrawQuad* quad) {
   gfx::Rect tile_rect = quad->visible_rect;
-
-  bool clipped = false;
-  gfx::QuadF device_layer_quad = MathUtil::MapQuad(
-      device_transform, gfx::QuadF(quad->visibleContentRect()), &clipped);
-
-  bool is_axis_aligned_in_target = device_layer_quad.IsRectilinear();
-  bool is_nearest_rect_within_epsilon =
-      is_axis_aligned_in_target &&
-      gfx::IsNearestRectWithinDistance(device_layer_quad.BoundingBox(),
-                                       kAntiAliasingEpsilon);
-  // AAing clipped quads is not supported by the code yet.
-  bool use_aa = !clipped && !is_nearest_rect_within_epsilon && quad->IsEdge();
-  if (!use_aa)
-    return false;
-
-  LayerQuad device_layer_bounds(gfx::QuadF(device_layer_quad.BoundingBox()));
-  device_layer_bounds.InflateAntiAliasingDistance();
-
-  LayerQuad device_layer_edges(device_layer_quad);
-  device_layer_edges.InflateAntiAliasingDistance();
-
-  device_layer_edges.ToFloatArray(edge);
-  device_layer_bounds.ToFloatArray(&edge[12]);
-
   gfx::PointF bottom_right = tile_rect.bottom_right();
   gfx::PointF bottom_left = tile_rect.bottom_left();
   gfx::PointF top_left = tile_rect.origin();
   gfx::PointF top_right = tile_rect.top_right();
+  bool clipped = false;
 
   // Map points to device space. We ignore |clipped|, since the result of
   // |MapPoint()| still produces a valid point to draw the quad with. When
@@ -1529,7 +1488,72 @@
   right_edge.scale(sign);
 
   // Create device space quad.
-  LayerQuad device_quad(left_edge, top_edge, right_edge, bottom_edge);
+  return LayerQuad(left_edge, top_edge, right_edge, bottom_edge).ToQuadF();
+}
+
+// static
+bool GLRenderer::ShouldAntialiasQuad(const gfx::Transform& device_transform,
+                                     const DrawQuad* quad,
+                                     bool force_antialiasing) {
+  bool is_render_pass_quad = (quad->material == DrawQuad::RENDER_PASS);
+  // For render pass quads, |device_transform| already contains quad's rect.
+  // TODO(rosca@adobe.com): remove branching on is_render_pass_quad
+  // crbug.com/429702
+  if (!is_render_pass_quad && !quad->IsEdge())
+    return false;
+  gfx::RectF content_rect =
+      is_render_pass_quad ? QuadVertexRect() : quad->visibleContentRect();
+
+  bool clipped = false;
+  gfx::QuadF device_layer_quad =
+      MathUtil::MapQuad(device_transform, gfx::QuadF(content_rect), &clipped);
+
+  if (device_layer_quad.BoundingBox().IsEmpty())
+    return false;
+
+  bool is_axis_aligned_in_target = device_layer_quad.IsRectilinear();
+  bool is_nearest_rect_within_epsilon =
+      is_axis_aligned_in_target &&
+      gfx::IsNearestRectWithinDistance(device_layer_quad.BoundingBox(),
+                                       kAntiAliasingEpsilon);
+  // AAing clipped quads is not supported by the code yet.
+  bool use_aa = !clipped && !is_nearest_rect_within_epsilon;
+  return use_aa || force_antialiasing;
+}
+
+// static
+void GLRenderer::SetupQuadForAntialiasing(
+    const gfx::Transform& device_transform,
+    const DrawQuad* quad,
+    gfx::QuadF* local_quad,
+    float edge[24]) {
+  bool is_render_pass_quad = (quad->material == DrawQuad::RENDER_PASS);
+  gfx::RectF content_rect =
+      is_render_pass_quad ? QuadVertexRect() : quad->visibleContentRect();
+
+  bool clipped = false;
+  gfx::QuadF device_layer_quad =
+      MathUtil::MapQuad(device_transform, gfx::QuadF(content_rect), &clipped);
+
+  LayerQuad device_layer_bounds(gfx::QuadF(device_layer_quad.BoundingBox()));
+  device_layer_bounds.InflateAntiAliasingDistance();
+
+  LayerQuad device_layer_edges(device_layer_quad);
+  device_layer_edges.InflateAntiAliasingDistance();
+
+  device_layer_edges.ToFloatArray(edge);
+  device_layer_bounds.ToFloatArray(&edge[12]);
+
+  bool use_aa_on_all_four_edges =
+      is_render_pass_quad ||
+      (quad->IsTopEdge() && quad->IsLeftEdge() && quad->IsBottomEdge() &&
+       quad->IsRightEdge() && quad->visible_rect == quad->rect);
+
+  gfx::QuadF device_quad =
+      use_aa_on_all_four_edges
+          ? device_layer_edges.ToQuadF()
+          : GetDeviceQuadWithAntialiasingOnExteriorEdges(
+                device_layer_edges, device_transform, quad);
 
   // Map device space quad to local space. device_transform has no 3d
   // component since it was flattened, so we don't need to project.  We should
@@ -1537,13 +1561,11 @@
   gfx::Transform inverse_device_transform(gfx::Transform::kSkipInitialization);
   bool did_invert = device_transform.GetInverse(&inverse_device_transform);
   DCHECK(did_invert);
-  *local_quad = MathUtil::MapQuad(
-      inverse_device_transform, device_quad.ToQuadF(), &clipped);
+  *local_quad =
+      MathUtil::MapQuad(inverse_device_transform, device_quad, &clipped);
   // We should not DCHECK(!clipped) here, because anti-aliasing inflation may
   // cause device_quad to become clipped. To our knowledge this scenario does
   // not need to be handled differently than the unclipped case.
-
-  return true;
 }
 
 void GLRenderer::DrawSolidColorQuad(const DrawingFrame* frame,
@@ -1565,17 +1587,20 @@
   if (!device_transform.IsInvertible())
     return;
 
+  bool force_aa = false;
   gfx::QuadF local_quad = gfx::QuadF(gfx::RectF(tile_rect));
   float edge[24];
-  bool use_aa =
-      settings_->allow_antialiasing && !quad->force_anti_aliasing_off &&
-      SetupQuadForAntialiasing(device_transform, quad, &local_quad, edge);
+  bool use_aa = settings_->allow_antialiasing &&
+                !quad->force_anti_aliasing_off &&
+                ShouldAntialiasQuad(device_transform, quad, force_aa);
 
   SolidColorProgramUniforms uniforms;
-  if (use_aa)
+  if (use_aa) {
+    SetupQuadForAntialiasing(device_transform, quad, &local_quad, edge);
     SolidColorUniformLocation(GetSolidColorProgramAA(), &uniforms);
-  else
+  } else {
     SolidColorUniformLocation(GetSolidColorProgram(), &uniforms);
+  }
   SetUseProgram(uniforms.program);
 
   GLC(gl_,
@@ -1649,6 +1674,29 @@
 void GLRenderer::DrawContentQuad(const DrawingFrame* frame,
                                  const ContentDrawQuadBase* quad,
                                  ResourceProvider::ResourceId resource_id) {
+  gfx::Transform device_transform =
+      frame->window_matrix * frame->projection_matrix * quad->quadTransform();
+  device_transform.FlattenTo2d();
+
+  bool use_aa = settings_->allow_antialiasing &&
+                ShouldAntialiasQuad(device_transform, quad, false);
+
+  // TODO(timav): simplify coordinate transformations in DrawContentQuadAA
+  // similar to the way DrawContentQuadNoAA works and then consider
+  // combining DrawContentQuadAA and DrawContentQuadNoAA into one method.
+  if (use_aa)
+    DrawContentQuadAA(frame, quad, resource_id, device_transform);
+  else
+    DrawContentQuadNoAA(frame, quad, resource_id);
+}
+
+void GLRenderer::DrawContentQuadAA(const DrawingFrame* frame,
+                                   const ContentDrawQuadBase* quad,
+                                   ResourceProvider::ResourceId resource_id,
+                                   const gfx::Transform& device_transform) {
+  if (!device_transform.IsInvertible())
+    return;
+
   gfx::Rect tile_rect = quad->visible_rect;
 
   gfx::RectF tex_coord_rect = MathUtil::ScaleRectProportional(
@@ -1688,25 +1736,12 @@
   TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired(
       gl_, &highp_threshold_cache_, highp_threshold_min_, quad->texture_size);
 
-  gfx::Transform device_transform =
-      frame->window_matrix * frame->projection_matrix * quad->quadTransform();
-  device_transform.FlattenTo2d();
-  if (!device_transform.IsInvertible())
-    return;
-
   gfx::QuadF local_quad = gfx::QuadF(gfx::RectF(tile_rect));
   float edge[24];
-  bool use_aa =
-      settings_->allow_antialiasing &&
-      SetupQuadForAntialiasing(device_transform, quad, &local_quad, edge);
+  SetupQuadForAntialiasing(device_transform, quad, &local_quad, edge);
 
-  bool scaled = (tex_to_geom_scale_x != 1.f || tex_to_geom_scale_y != 1.f);
-  GLenum filter = (use_aa || scaled ||
-                   !quad->quadTransform().IsIdentityOrIntegerTranslation())
-                      ? GL_LINEAR
-                      : GL_NEAREST;
   ResourceProvider::ScopedSamplerGL quad_resource_lock(
-      resource_provider_, resource_id, filter);
+      resource_provider_, resource_id, GL_LINEAR);
   SamplerType sampler =
       SamplerTypeFromTextureTarget(quad_resource_lock.target());
 
@@ -1726,81 +1761,41 @@
   }
 
   TileProgramUniforms uniforms;
-  if (use_aa) {
-    if (quad->swizzle_contents) {
-      TileUniformLocation(GetTileProgramSwizzleAA(tex_coord_precision, sampler),
-                          &uniforms);
-    } else {
-      TileUniformLocation(GetTileProgramAA(tex_coord_precision, sampler),
-                          &uniforms);
-    }
+  if (quad->swizzle_contents) {
+    TileUniformLocation(GetTileProgramSwizzleAA(tex_coord_precision, sampler),
+                        &uniforms);
   } else {
-    if (quad->ShouldDrawWithBlending()) {
-      if (quad->swizzle_contents) {
-        TileUniformLocation(GetTileProgramSwizzle(tex_coord_precision, sampler),
-                            &uniforms);
-      } else {
-        TileUniformLocation(GetTileProgram(tex_coord_precision, sampler),
-                            &uniforms);
-      }
-    } else {
-      if (quad->swizzle_contents) {
-        TileUniformLocation(
-            GetTileProgramSwizzleOpaque(tex_coord_precision, sampler),
-            &uniforms);
-      } else {
-        TileUniformLocation(GetTileProgramOpaque(tex_coord_precision, sampler),
-                            &uniforms);
-      }
-    }
+    TileUniformLocation(GetTileProgramAA(tex_coord_precision, sampler),
+                        &uniforms);
   }
 
   SetUseProgram(uniforms.program);
   GLC(gl_, gl_->Uniform1i(uniforms.sampler_location, 0));
 
-  if (use_aa) {
-    float viewport[4] = {static_cast<float>(viewport_.x()),
-                         static_cast<float>(viewport_.y()),
-                         static_cast<float>(viewport_.width()),
-                         static_cast<float>(viewport_.height()), };
-    GLC(gl_, gl_->Uniform4fv(uniforms.viewport_location, 1, viewport));
-    GLC(gl_, gl_->Uniform3fv(uniforms.edge_location, 8, edge));
+  float viewport[4] = {
+      static_cast<float>(viewport_.x()),
+      static_cast<float>(viewport_.y()),
+      static_cast<float>(viewport_.width()),
+      static_cast<float>(viewport_.height()),
+  };
+  GLC(gl_, gl_->Uniform4fv(uniforms.viewport_location, 1, viewport));
+  GLC(gl_, gl_->Uniform3fv(uniforms.edge_location, 8, edge));
 
-    GLC(gl_,
-        gl_->Uniform4f(uniforms.vertex_tex_transform_location,
-                       vertex_tex_translate_x,
-                       vertex_tex_translate_y,
-                       vertex_tex_scale_x,
-                       vertex_tex_scale_y));
-    GLC(gl_,
-        gl_->Uniform4f(uniforms.fragment_tex_transform_location,
-                       fragment_tex_translate_x,
-                       fragment_tex_translate_y,
-                       fragment_tex_scale_x,
-                       fragment_tex_scale_y));
-  } else {
-    // Move fragment shader transform to vertex shader. We can do this while
-    // still producing correct results as fragment_tex_transform_location
-    // should always be non-negative when tiles are transformed in a way
-    // that could result in sampling outside the layer.
-    vertex_tex_scale_x *= fragment_tex_scale_x;
-    vertex_tex_scale_y *= fragment_tex_scale_y;
-    vertex_tex_translate_x *= fragment_tex_scale_x;
-    vertex_tex_translate_y *= fragment_tex_scale_y;
-    vertex_tex_translate_x += fragment_tex_translate_x;
-    vertex_tex_translate_y += fragment_tex_translate_y;
+  GLC(gl_,
+      gl_->Uniform4f(uniforms.vertex_tex_transform_location,
+                     vertex_tex_translate_x,
+                     vertex_tex_translate_y,
+                     vertex_tex_scale_x,
+                     vertex_tex_scale_y));
+  GLC(gl_,
+      gl_->Uniform4f(uniforms.fragment_tex_transform_location,
+                     fragment_tex_translate_x,
+                     fragment_tex_translate_y,
+                     fragment_tex_scale_x,
+                     fragment_tex_scale_y));
 
-    GLC(gl_,
-        gl_->Uniform4f(uniforms.vertex_tex_transform_location,
-                       vertex_tex_translate_x,
-                       vertex_tex_translate_y,
-                       vertex_tex_scale_x,
-                       vertex_tex_scale_y));
-  }
-
-  // Enable blending when the quad properties require it or if we decided
-  // to use antialiasing.
-  SetBlendEnabled(quad->ShouldDrawWithBlending() || use_aa);
+  // Blending is required for antialiasing.
+  SetBlendEnabled(true);
 
   // Normalize to tile_rect.
   local_quad.Scale(1.0f / tile_rect.width(), 1.0f / tile_rect.height());
@@ -1819,6 +1814,103 @@
       frame, quad->quadTransform(), centered_rect, uniforms.matrix_location);
 }
 
+void GLRenderer::DrawContentQuadNoAA(const DrawingFrame* frame,
+                                     const ContentDrawQuadBase* quad,
+                                     ResourceProvider::ResourceId resource_id) {
+  gfx::RectF tex_coord_rect = MathUtil::ScaleRectProportional(
+      quad->tex_coord_rect, quad->rect, quad->visible_rect);
+  float tex_to_geom_scale_x = quad->rect.width() / quad->tex_coord_rect.width();
+  float tex_to_geom_scale_y =
+      quad->rect.height() / quad->tex_coord_rect.height();
+
+  bool scaled = (tex_to_geom_scale_x != 1.f || tex_to_geom_scale_y != 1.f);
+  GLenum filter =
+      (scaled || !quad->quadTransform().IsIdentityOrIntegerTranslation())
+          ? GL_LINEAR
+          : GL_NEAREST;
+
+  ResourceProvider::ScopedSamplerGL quad_resource_lock(
+      resource_provider_, resource_id, filter);
+  SamplerType sampler =
+      SamplerTypeFromTextureTarget(quad_resource_lock.target());
+
+  float vertex_tex_translate_x = tex_coord_rect.x();
+  float vertex_tex_translate_y = tex_coord_rect.y();
+  float vertex_tex_scale_x = tex_coord_rect.width();
+  float vertex_tex_scale_y = tex_coord_rect.height();
+
+  // Map to normalized texture coordinates.
+  if (sampler != SamplerType2DRect) {
+    gfx::Size texture_size = quad->texture_size;
+    DCHECK(!texture_size.IsEmpty());
+    vertex_tex_translate_x /= texture_size.width();
+    vertex_tex_translate_y /= texture_size.height();
+    vertex_tex_scale_x /= texture_size.width();
+    vertex_tex_scale_y /= texture_size.height();
+  }
+
+  TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired(
+      gl_, &highp_threshold_cache_, highp_threshold_min_, quad->texture_size);
+
+  TileProgramUniforms uniforms;
+  if (quad->ShouldDrawWithBlending()) {
+    if (quad->swizzle_contents) {
+      TileUniformLocation(GetTileProgramSwizzle(tex_coord_precision, sampler),
+                          &uniforms);
+    } else {
+      TileUniformLocation(GetTileProgram(tex_coord_precision, sampler),
+                          &uniforms);
+    }
+  } else {
+    if (quad->swizzle_contents) {
+      TileUniformLocation(
+          GetTileProgramSwizzleOpaque(tex_coord_precision, sampler), &uniforms);
+    } else {
+      TileUniformLocation(GetTileProgramOpaque(tex_coord_precision, sampler),
+                          &uniforms);
+    }
+  }
+
+  SetUseProgram(uniforms.program);
+  GLC(gl_, gl_->Uniform1i(uniforms.sampler_location, 0));
+
+  GLC(gl_,
+      gl_->Uniform4f(uniforms.vertex_tex_transform_location,
+                     vertex_tex_translate_x,
+                     vertex_tex_translate_y,
+                     vertex_tex_scale_x,
+                     vertex_tex_scale_y));
+
+  SetBlendEnabled(quad->ShouldDrawWithBlending());
+
+  SetShaderOpacity(quad->opacity(), uniforms.alpha_location);
+
+  // Pass quad coordinates to the uniform in the same order as GeometryBinding
+  // does, then vertices will match the texture mapping in the vertex buffer.
+  // The method SetShaderQuadF() changes the order of vertices and so it's
+  // not used here.
+
+  gfx::RectF tile_rect = quad->visible_rect;
+  float gl_quad[8] = {
+    tile_rect.x(),
+    tile_rect.bottom(),
+    tile_rect.x(),
+    tile_rect.y(),
+    tile_rect.right(),
+    tile_rect.y(),
+    tile_rect.right(),
+    tile_rect.bottom(),
+  };
+  GLC(gl_, gl_->Uniform2fv(uniforms.quad_location, 4, gl_quad));
+
+  static float gl_matrix[16];
+  ToGLMatrix(&gl_matrix[0], frame->projection_matrix * quad->quadTransform());
+  GLC(gl_,
+      gl_->UniformMatrix4fv(uniforms.matrix_location, 1, false, &gl_matrix[0]));
+
+  GLC(gl_, gl_->DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0));
+}
+
 void GLRenderer::DrawYUVVideoQuad(const DrawingFrame* frame,
                                   const YUVVideoDrawQuad* quad) {
   SetBlendEnabled(quad->ShouldDrawWithBlending());
@@ -2004,8 +2096,8 @@
   }
 
   SkCanvas canvas(on_demand_tile_raster_bitmap_);
-  quad->picture_pile->PlaybackToCanvas(
-      &canvas, quad->content_rect, quad->contents_scale, NULL);
+  quad->picture_pile->PlaybackToCanvas(&canvas, quad->content_rect,
+                                       quad->contents_scale);
 
   uint8_t* bitmap_pixels = NULL;
   SkBitmap on_demand_tile_raster_bitmap_dest;
@@ -2062,7 +2154,7 @@
 
 void GLRenderer::FlushTextureQuadCache() {
   // Check to see if we have anything to draw.
-  if (draw_cache_.program_id == 0)
+  if (draw_cache_.program_id == -1)
     return;
 
   // Set the correct blending mode.
@@ -2118,7 +2210,7 @@
                         0));
 
   // Clear the cache.
-  draw_cache_.program_id = 0;
+  draw_cache_.program_id = -1;
   draw_cache_.uv_xform_data.resize(0);
   draw_cache_.vertex_opacity_data.resize(0);
   draw_cache_.matrix_data.resize(0);
diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h
index dc3160a..4930204 100644
--- a/cc/output/gl_renderer.h
+++ b/cc/output/gl_renderer.h
@@ -124,13 +124,15 @@
       scoped_ptr<CopyOutputRequest> request) override;
   void FinishDrawingQuadList() override;
 
-  // Check if quad needs antialiasing and if so, inflate the quad and
-  // fill edge array for fragment shader.  local_quad is set to
-  // inflated quad if antialiasing is required, otherwise it is left
-  // unchanged.  edge array is filled with inflated quad's edge data
-  // if antialiasing is required, otherwise it is left unchanged.
   // Returns true if quad requires antialiasing and false otherwise.
-  static bool SetupQuadForAntialiasing(const gfx::Transform& device_transform,
+  static bool ShouldAntialiasQuad(const gfx::Transform& device_transform,
+                                  const DrawQuad* quad,
+                                  bool force_antialiasing);
+
+  // Inflate the quad and fill edge array for fragment shader.
+  // |local_quad| is set to inflated quad. |edge| array is filled with
+  // inflated quad's edge data.
+  static void SetupQuadForAntialiasing(const gfx::Transform& device_transform,
                                        const DrawQuad* quad,
                                        gfx::QuadF* local_quad,
                                        float edge[24]);
@@ -168,7 +170,7 @@
   scoped_ptr<ScopedResource> ApplyInverseTransformForBackgroundFilters(
       DrawingFrame* frame,
       const RenderPassDrawQuad* quad,
-      const gfx::Transform& contents_device_transform_inverse,
+      const gfx::Transform& contents_device_transform,
       skia::RefPtr<SkImage> backdrop_bitmap,
       const gfx::Rect& backdrop_bounding_rect);
 
@@ -186,6 +188,13 @@
   void DrawContentQuad(const DrawingFrame* frame,
                        const ContentDrawQuadBase* quad,
                        ResourceProvider::ResourceId resource_id);
+  void DrawContentQuadAA(const DrawingFrame* frame,
+                         const ContentDrawQuadBase* quad,
+                         ResourceProvider::ResourceId resource_id,
+                         const gfx::Transform& device_transform);
+  void DrawContentQuadNoAA(const DrawingFrame* frame,
+                           const ContentDrawQuadBase* quad,
+                           ResourceProvider::ResourceId resource_id);
   void DrawYUVVideoQuad(const DrawingFrame* frame,
                         const YUVVideoDrawQuad* quad);
   void DrawPictureQuad(const DrawingFrame* frame,
diff --git a/cc/output/gl_renderer_draw_cache.cc b/cc/output/gl_renderer_draw_cache.cc
index 51834c4..a0004f2 100644
--- a/cc/output/gl_renderer_draw_cache.cc
+++ b/cc/output/gl_renderer_draw_cache.cc
@@ -7,7 +7,16 @@
 namespace cc {
 
 TexturedQuadDrawCache::TexturedQuadDrawCache()
-    : program_id(0) {}
+    : program_id(-1),
+      resource_id(-1),
+      needs_blending(false),
+      background_color(0),
+      uv_xform_location(-1),
+      background_color_location(-1),
+      vertex_opacity_location(-1),
+      matrix_location(-1),
+      sampler_location(-1) {
+}
 
 TexturedQuadDrawCache::~TexturedQuadDrawCache() {}
 
diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc
index 8b7dc2a..99192c8 100644
--- a/cc/output/overlay_unittest.cc
+++ b/cc/output/overlay_unittest.cc
@@ -537,6 +537,8 @@
 
   MOCK_METHOD2(DoDrawQuad, void(DrawingFrame* frame, const DrawQuad* quad));
 
+  using GLRenderer::BeginDrawingFrame;
+
   virtual void FinishDrawingFrame(DrawingFrame* frame) override {
     GLRenderer::FinishDrawingFrame(frame);
 
@@ -724,19 +726,26 @@
   ResourceProvider::ResourceId resource2 =
       CreateResource(resource_provider_.get());
 
+  scoped_ptr<RenderPass> pass = CreateRenderPass();
+  RenderPassList pass_list;
+  pass_list.push_back(pass.Pass());
+
   DirectRenderer::DrawingFrame frame1;
+  frame1.render_passes_in_draw_order = &pass_list;
   frame1.overlay_list.resize(2);
   OverlayCandidate& overlay1 = frame1.overlay_list.back();
   overlay1.resource_id = resource1;
   overlay1.plane_z_order = 1;
 
   DirectRenderer::DrawingFrame frame2;
+  frame2.render_passes_in_draw_order = &pass_list;
   frame2.overlay_list.resize(2);
   OverlayCandidate& overlay2 = frame2.overlay_list.back();
   overlay2.resource_id = resource2;
   overlay2.plane_z_order = 1;
 
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
+  renderer_->BeginDrawingFrame(&frame1);
   renderer_->FinishDrawingFrame(&frame1);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
@@ -744,6 +753,7 @@
   Mock::VerifyAndClearExpectations(&scheduler_);
 
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
+  renderer_->BeginDrawingFrame(&frame2);
   renderer_->FinishDrawingFrame(&frame2);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
@@ -752,6 +762,7 @@
   Mock::VerifyAndClearExpectations(&scheduler_);
 
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
+  renderer_->BeginDrawingFrame(&frame1);
   renderer_->FinishDrawingFrame(&frame1);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
@@ -762,7 +773,9 @@
   // No overlays, release the resource.
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
   DirectRenderer::DrawingFrame frame3;
+  frame3.render_passes_in_draw_order = &pass_list;
   renderer_->set_expect_overlays(false);
+  renderer_->BeginDrawingFrame(&frame3);
   renderer_->FinishDrawingFrame(&frame3);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
@@ -773,12 +786,14 @@
   // Use the same buffer twice.
   renderer_->set_expect_overlays(true);
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
+  renderer_->BeginDrawingFrame(&frame1);
   renderer_->FinishDrawingFrame(&frame1);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   SwapBuffers();
   Mock::VerifyAndClearExpectations(&scheduler_);
 
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
+  renderer_->BeginDrawingFrame(&frame1);
   renderer_->FinishDrawingFrame(&frame1);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   SwapBuffers();
@@ -787,6 +802,7 @@
 
   EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
   renderer_->set_expect_overlays(false);
+  renderer_->BeginDrawingFrame(&frame3);
   renderer_->FinishDrawingFrame(&frame3);
   EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
   SwapBuffers();
diff --git a/cc/output/shader.cc b/cc/output/shader.cc
index eb5041a..b962d4a 100644
--- a/cc/output/shader.cc
+++ b/cc/output/shader.cc
@@ -546,6 +546,7 @@
   return VERTEX_SHADER(
       // clang-format on
       attribute TexCoordPrecision vec4 a_position;
+      attribute TexCoordPrecision vec2 a_texCoord;
       attribute float a_index;
       uniform mat4 matrix;
       uniform TexCoordPrecision vec2 quad[4];
@@ -554,7 +555,7 @@
       void main() {
         vec2 pos = quad[int(a_index)];  // NOLINT
         gl_Position = matrix * vec4(pos, a_position.z, a_position.w);
-        v_texCoord = pos.xy * vertexTexTransform.zw + vertexTexTransform.xy;
+        v_texCoord = a_texCoord * vertexTexTransform.zw + vertexTexTransform.xy;
       }
       // clang-format off
   );  // NOLINT(whitespace/parens)
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc
index 010b1fa..06f1851 100644
--- a/cc/output/software_renderer.cc
+++ b/cc/output/software_renderer.cc
@@ -350,8 +350,8 @@
   TRACE_EVENT0("cc",
                "SoftwareRenderer::DrawPictureQuad");
 
-  quad->picture_pile->RasterDirect(
-      current_canvas_, quad->content_rect, quad->contents_scale, NULL);
+  quad->picture_pile->RasterDirect(current_canvas_, quad->content_rect,
+                                   quad->contents_scale);
 
   current_canvas_->setDrawFilter(NULL);
 }
diff --git a/cc/quads/draw_quad_unittest.cc b/cc/quads/draw_quad_unittest.cc
index 1d09307..d3753ca 100644
--- a/cc/quads/draw_quad_unittest.cc
+++ b/cc/quads/draw_quad_unittest.cc
@@ -102,13 +102,13 @@
       render_pass->CreateAndAppendSharedQuadState();                       \
   copy_shared_state->CopyFrom(shared_state);
 
-#define QUAD_DATA \
-    gfx::Rect quad_rect(30, 40, 50, 60); \
-    gfx::Rect quad_visible_rect(40, 50, 30, 20); \
-    gfx::Rect quad_opaque_rect( 60, 55, 10, 10); \
-    ALLOW_UNUSED_LOCAL(quad_opaque_rect); \
-    bool needs_blending = true; \
-    ALLOW_UNUSED_LOCAL(needs_blending);
+#define QUAD_DATA                              \
+  gfx::Rect quad_rect(30, 40, 50, 60);         \
+  gfx::Rect quad_visible_rect(40, 50, 30, 20); \
+  gfx::Rect quad_opaque_rect(60, 55, 10, 10);  \
+  ALLOW_UNUSED_LOCAL(quad_opaque_rect);        \
+  bool needs_blending = true;                  \
+  ALLOW_UNUSED_LOCAL(needs_blending);
 
 #define SETUP_AND_COPY_QUAD_NEW(Type, quad)                                \
   DrawQuad* copy_new =                                                     \
@@ -979,14 +979,14 @@
         break;
     }
   }
-  EXPECT_EQ(sizeof(kLargestDrawQuad), largest);
+  EXPECT_EQ(LargestDrawQuadSize(), largest);
 
   if (!HasFailure())
     return;
 
   // On failure, output the size of all quads for debugging.
   LOG(ERROR) << "largest " << largest;
-  LOG(ERROR) << "kLargestDrawQuad " << sizeof(kLargestDrawQuad);
+  LOG(ERROR) << "kLargestDrawQuad " << LargestDrawQuadSize();
   for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) {
     switch (static_cast<DrawQuad::Material>(i)) {
       case DrawQuad::CHECKERBOARD:
diff --git a/cc/quads/largest_draw_quad.cc b/cc/quads/largest_draw_quad.cc
new file mode 100644
index 0000000..55fcb22
--- /dev/null
+++ b/cc/quads/largest_draw_quad.cc
@@ -0,0 +1,20 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cc/quads/largest_draw_quad.h"
+
+#include <algorithm>
+
+#include "cc/quads/render_pass_draw_quad.h"
+#include "cc/quads/stream_video_draw_quad.h"
+
+namespace cc {
+
+size_t LargestDrawQuadSize() {
+  // The largest quad is either a RenderPassDrawQuad or a StreamVideoDrawQuad
+  // depends on hardware structure.
+  return std::max(sizeof(RenderPassDrawQuad), sizeof(StreamVideoDrawQuad));
+}
+
+}  // namespace cc
diff --git a/cc/quads/largest_draw_quad.h b/cc/quads/largest_draw_quad.h
index d14906a..85d9f17 100644
--- a/cc/quads/largest_draw_quad.h
+++ b/cc/quads/largest_draw_quad.h
@@ -5,15 +5,12 @@
 #ifndef CC_QUADS_LARGEST_DRAW_QUAD_H_
 #define CC_QUADS_LARGEST_DRAW_QUAD_H_
 
-namespace cc {
-class StreamVideoDrawQuad;
-class RenderPassDrawQuad;
+#include "base/basictypes.h"
+#include "cc/base/cc_export.h"
 
-#if defined(ARCH_CPU_64_BITS)
-typedef RenderPassDrawQuad kLargestDrawQuad;
-#else
-typedef StreamVideoDrawQuad kLargestDrawQuad;
-#endif
+namespace cc {
+
+CC_EXPORT size_t LargestDrawQuadSize();
 
 }  // namespace cc
 
diff --git a/cc/quads/list_container.h b/cc/quads/list_container.h
index a61a6e0..dd313fc 100644
--- a/cc/quads/list_container.h
+++ b/cc/quads/list_container.h
@@ -20,7 +20,7 @@
 // pointer will continue to be valid.  This class is used to contain
 // SharedQuadState or DrawQuad. Since the size of each DrawQuad varies, to hold
 // DrawQuads, the allocations size of each element in this class is
-// kLargestDrawQuad while BaseElementType is DrawQuad.
+// LargestDrawQuadSize while BaseElementType is DrawQuad.
 template <class BaseElementType>
 class CC_EXPORT ListContainer {
  public:
diff --git a/cc/quads/list_container_unittest.cc b/cc/quads/list_container_unittest.cc
index d68ab59..3ef677c 100644
--- a/cc/quads/list_container_unittest.cc
+++ b/cc/quads/list_container_unittest.cc
@@ -64,7 +64,7 @@
 };
 
 TEST(ListContainerTest, ConstructorCalledInAllocateAndConstruct) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
 
   size_t size = 2;
   SimpleDrawQuadConstructMagicNumberOne* dq_1 =
@@ -81,7 +81,7 @@
 }
 
 TEST(ListContainerTest, DestructorCalled) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
 
   size_t size = 1;
   MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
@@ -92,7 +92,7 @@
 }
 
 TEST(ListContainerTest, DestructorCalledOnceWhenClear) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
   size_t size = 1;
   MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
 
@@ -114,7 +114,7 @@
 }
 
 TEST(ListContainerTest, DestructorCalledOnceWhenErase) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
   size_t size = 1;
   MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
 
@@ -435,7 +435,7 @@
 }
 
 TEST(ListContainerTest, SimpleDeletion) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
   std::vector<SimpleDrawQuad*> sdq_list;
   size_t size = 10;
   for (size_t i = 0; i < size; ++i) {
@@ -457,7 +457,7 @@
 }
 
 TEST(ListContainerTest, SimpleIterationAndManipulation) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
   std::vector<SimpleDrawQuad*> sdq_list;
   size_t size = 10;
   for (size_t i = 0; i < size; ++i) {
@@ -482,7 +482,7 @@
 }
 
 TEST(ListContainerTest, SimpleManipulationWithIndexSimpleDrawQuad) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad));
+  ListContainer<DrawQuad> list(LargestDrawQuadSize());
   std::vector<SimpleDrawQuad*> dq_list;
   size_t size = 10;
   for (size_t i = 0; i < size; ++i) {
@@ -504,7 +504,7 @@
 
 TEST(ListContainerTest,
      SimpleManipulationWithIndexMoreThanOneAllocationSimpleDrawQuad) {
-  ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad), 2);
+  ListContainer<DrawQuad> list(LargestDrawQuadSize(), 2);
   std::vector<SimpleDrawQuad*> dq_list;
   size_t size = 10;
   for (size_t i = 0; i < size; ++i) {
diff --git a/cc/quads/render_pass.cc b/cc/quads/render_pass.cc
index e311aec..a1426f5 100644
--- a/cc/quads/render_pass.cc
+++ b/cc/quads/render_pass.cc
@@ -34,8 +34,7 @@
 namespace cc {
 
 QuadList::QuadList(size_t default_size_to_reserve)
-    : ListContainer<DrawQuad>(sizeof(kLargestDrawQuad),
-                              default_size_to_reserve) {
+    : ListContainer<DrawQuad>(LargestDrawQuadSize(), default_size_to_reserve) {
 }
 
 scoped_ptr<RenderPass> RenderPass::Create() {
diff --git a/cc/resources/bitmap_raster_worker_pool.cc b/cc/resources/bitmap_raster_worker_pool.cc
index f58f293..3b3739a 100644
--- a/cc/resources/bitmap_raster_worker_pool.cc
+++ b/cc/resources/bitmap_raster_worker_pool.cc
@@ -26,9 +26,8 @@
   // Overridden from RasterBuffer:
   void Playback(const RasterSource* raster_source,
                 const gfx::Rect& rect,
-                float scale,
-                RenderingStatsInstrumentation* stats) override {
-    raster_source->PlaybackToCanvas(lock_.sk_canvas(), rect, scale, stats);
+                float scale) override {
+    raster_source->PlaybackToCanvas(lock_.sk_canvas(), rect, scale);
   }
 
  private:
diff --git a/cc/resources/bitmap_skpicture_content_layer_updater.cc b/cc/resources/bitmap_skpicture_content_layer_updater.cc
index 5b4187d..5b8e5e4 100644
--- a/cc/resources/bitmap_skpicture_content_layer_updater.cc
+++ b/cc/resources/bitmap_skpicture_content_layer_updater.cc
@@ -74,14 +74,7 @@
   // Translate the origin of content_rect to that of source_rect.
   canvas->translate(paint_rect().x() - source_rect.x(),
                     paint_rect().y() - source_rect.y());
-  base::TimeTicks start_time =
-      rendering_stats_instrumentation_->StartRecording();
   DrawPicture(canvas);
-  base::TimeDelta duration =
-      rendering_stats_instrumentation_->EndRecording(start_time);
-  rendering_stats_instrumentation_->AddRaster(
-      duration,
-      source_rect.width() * source_rect.height());
 }
 
 }  // namespace cc
diff --git a/cc/resources/gpu_raster_worker_pool.cc b/cc/resources/gpu_raster_worker_pool.cc
index 3237500..04724f1 100644
--- a/cc/resources/gpu_raster_worker_pool.cc
+++ b/cc/resources/gpu_raster_worker_pool.cc
@@ -36,8 +36,7 @@
   // Overridden from RasterBuffer:
   void Playback(const RasterSource* raster_source,
                 const gfx::Rect& rect,
-                float scale,
-                RenderingStatsInstrumentation* stats) override {
+                float scale) override {
     // Turn on distance fields for layers that have ever animated.
     bool use_distance_field_text =
         use_distance_field_text_ ||
@@ -53,7 +52,7 @@
         skia::SharePtr(recorder.beginRecording(size.width(), size.height()));
 
     canvas->save();
-    raster_source->PlaybackToCanvas(canvas.get(), rect, scale, stats);
+    raster_source->PlaybackToCanvas(canvas.get(), rect, scale);
     canvas->restore();
 
     // Add the canvas and recorded picture to |multi_picture_draw_|.
diff --git a/cc/resources/one_copy_raster_worker_pool.cc b/cc/resources/one_copy_raster_worker_pool.cc
index c803262..a8b838e 100644
--- a/cc/resources/one_copy_raster_worker_pool.cc
+++ b/cc/resources/one_copy_raster_worker_pool.cc
@@ -54,16 +54,10 @@
   // Overridden from RasterBuffer:
   void Playback(const RasterSource* raster_source,
                 const gfx::Rect& rect,
-                float scale,
-                RenderingStatsInstrumentation* stats) override {
+                float scale) override {
     sequence_ = worker_pool_->PlaybackAndScheduleCopyOnWorkerThread(
-        lock_.Pass(),
-        raster_resource_.Pass(),
-        resource_,
-        raster_source,
-        rect,
-        scale,
-        stats);
+        lock_.Pass(), raster_resource_.Pass(), resource_, raster_source, rect,
+        scale);
   }
 
  private:
@@ -280,69 +274,62 @@
     const Resource* dst,
     const RasterSource* raster_source,
     const gfx::Rect& rect,
-    float scale,
-    RenderingStatsInstrumentation* stats) {
-  CopySequenceNumber sequence;
+    float scale) {
+  base::AutoLock lock(lock_);
 
-  {
-    base::AutoLock lock(lock_);
+  int failed_attempts = 0;
+  while ((scheduled_copy_operation_count_ + issued_copy_operation_count_) >=
+         kMaxCopyOperations) {
+    // Ignore limit when shutdown is set.
+    if (shutdown_)
+      break;
 
-    int failed_attempts = 0;
-    while ((scheduled_copy_operation_count_ + issued_copy_operation_count_) >=
-           kMaxCopyOperations) {
-      // Ignore limit when shutdown is set.
-      if (shutdown_)
-        break;
+    ++failed_attempts;
 
-      ++failed_attempts;
+    // Schedule a check that will also wait for operations to complete
+    // after too many failed attempts.
+    bool wait_if_needed = failed_attempts > kFailedAttemptsBeforeWaitIfNeeded;
 
-      // Schedule a check that will also wait for operations to complete
-      // after too many failed attempts.
-      bool wait_if_needed = failed_attempts > kFailedAttemptsBeforeWaitIfNeeded;
-
-      // Schedule a check for completed copy operations if too many operations
-      // are currently in-flight.
-      ScheduleCheckForCompletedCopyOperationsWithLockAcquired(wait_if_needed);
-
-      {
-        TRACE_EVENT0("cc", "WaitingForCopyOperationsToComplete");
-
-        // Wait for in-flight copy operations to drop below limit.
-        copy_operation_count_cv_.Wait();
-      }
-    }
-
-    // Increment |scheduled_copy_operation_count_| before releasing |lock_|.
-    ++scheduled_copy_operation_count_;
-
-    // There may be more work available, so wake up another worker thread.
-    copy_operation_count_cv_.Signal();
+    // Schedule a check for completed copy operations if too many operations
+    // are currently in-flight.
+    ScheduleCheckForCompletedCopyOperationsWithLockAcquired(wait_if_needed);
 
     {
-      base::AutoUnlock unlock(lock_);
+      TRACE_EVENT0("cc", "WaitingForCopyOperationsToComplete");
 
-      gfx::GpuMemoryBuffer* gpu_memory_buffer =
-          write_lock->GetGpuMemoryBuffer();
-      if (gpu_memory_buffer) {
-        RasterWorkerPool::PlaybackToMemory(gpu_memory_buffer->Map(),
-                                           src->format(),
-                                           src->size(),
-                                           gpu_memory_buffer->GetStride(),
-                                           raster_source,
-                                           rect,
-                                           scale,
-                                           stats);
-        gpu_memory_buffer->Unmap();
-      }
+      // Wait for in-flight copy operations to drop below limit.
+      copy_operation_count_cv_.Wait();
     }
-
-    // Acquire a sequence number for this copy operation.
-    sequence = next_copy_operation_sequence_++;
-
-    pending_copy_operations_.push_back(
-        make_scoped_ptr(new CopyOperation(write_lock.Pass(), src.Pass(), dst)));
   }
 
+  // Increment |scheduled_copy_operation_count_| before releasing |lock_|.
+  ++scheduled_copy_operation_count_;
+
+  // There may be more work available, so wake up another worker thread.
+  copy_operation_count_cv_.Signal();
+
+  {
+    base::AutoUnlock unlock(lock_);
+
+    gfx::GpuMemoryBuffer* gpu_memory_buffer = write_lock->GetGpuMemoryBuffer();
+    if (gpu_memory_buffer) {
+      RasterWorkerPool::PlaybackToMemory(gpu_memory_buffer->Map(),
+                                         src->format(),
+                                         src->size(),
+                                         gpu_memory_buffer->GetStride(),
+                                         raster_source,
+                                         rect,
+                                         scale);
+      gpu_memory_buffer->Unmap();
+    }
+  }
+
+  pending_copy_operations_.push_back(
+      make_scoped_ptr(new CopyOperation(write_lock.Pass(), src.Pass(), dst)));
+
+  // Acquire a sequence number for this copy operation.
+  CopySequenceNumber sequence = next_copy_operation_sequence_++;
+
   // Post task that will advance last flushed copy operation to |sequence|
   // if we have reached the flush period.
   if ((sequence % kCopyFlushPeriod) == 0) {
diff --git a/cc/resources/one_copy_raster_worker_pool.h b/cc/resources/one_copy_raster_worker_pool.h
index 1dc102f..b209da2 100644
--- a/cc/resources/one_copy_raster_worker_pool.h
+++ b/cc/resources/one_copy_raster_worker_pool.h
@@ -62,8 +62,7 @@
       const Resource* dst,
       const RasterSource* raster_source,
       const gfx::Rect& rect,
-      float scale,
-      RenderingStatsInstrumentation* stats);
+      float scale);
 
   // Issues copy operations until |sequence| has been processed. This will
   // return immediately if |sequence| has already been processed.
diff --git a/cc/resources/picture_pile.cc b/cc/resources/picture_pile.cc
index e00ed54..1ad673b 100644
--- a/cc/resources/picture_pile.cc
+++ b/cc/resources/picture_pile.cc
@@ -538,9 +538,7 @@
 
 void PicturePile::SetEmptyBounds() {
   tiling_.SetTilingSize(gfx::Size());
-  picture_map_.clear();
-  has_any_recordings_ = false;
-  recorded_viewport_ = gfx::Rect();
+  Clear();
 }
 
 void PicturePile::DetermineIfSolidColor() {
diff --git a/cc/resources/picture_pile_base.cc b/cc/resources/picture_pile_base.cc
index e7888f7..a145b6c 100644
--- a/cc/resources/picture_pile_base.cc
+++ b/cc/resources/picture_pile_base.cc
@@ -130,6 +130,8 @@
 void PicturePileBase::Clear() {
   picture_map_.clear();
   recorded_viewport_ = gfx::Rect();
+  has_any_recordings_ = false;
+  is_solid_color_ = false;
 }
 
 bool PicturePileBase::HasRecordingAt(int x, int y) {
diff --git a/cc/resources/picture_pile_impl.cc b/cc/resources/picture_pile_impl.cc
index f7c24c7..0ad746c 100644
--- a/cc/resources/picture_pile_impl.cc
+++ b/cc/resources/picture_pile_impl.cc
@@ -37,33 +37,25 @@
 PicturePileImpl::~PicturePileImpl() {
 }
 
-void PicturePileImpl::RasterDirect(
-    SkCanvas* canvas,
-    const gfx::Rect& canvas_rect,
-    float contents_scale,
-    RenderingStatsInstrumentation* rendering_stats_instrumentation) const {
+void PicturePileImpl::RasterDirect(SkCanvas* canvas,
+                                   const gfx::Rect& canvas_rect,
+                                   float contents_scale) const {
   RasterCommon(canvas,
                NULL,
                canvas_rect,
                contents_scale,
-               rendering_stats_instrumentation,
                false);
 }
 
-void PicturePileImpl::RasterForAnalysis(
-    skia::AnalysisCanvas* canvas,
-    const gfx::Rect& canvas_rect,
-    float contents_scale,
-    RenderingStatsInstrumentation* stats_instrumentation) const {
-  RasterCommon(
-      canvas, canvas, canvas_rect, contents_scale, stats_instrumentation, true);
+void PicturePileImpl::RasterForAnalysis(skia::AnalysisCanvas* canvas,
+                                        const gfx::Rect& canvas_rect,
+                                        float contents_scale) const {
+  RasterCommon(canvas, canvas, canvas_rect, contents_scale, true);
 }
 
-void PicturePileImpl::PlaybackToCanvas(
-    SkCanvas* canvas,
-    const gfx::Rect& canvas_rect,
-    float contents_scale,
-    RenderingStatsInstrumentation* rendering_stats_instrumentation) const {
+void PicturePileImpl::PlaybackToCanvas(SkCanvas* canvas,
+                                       const gfx::Rect& canvas_rect,
+                                       float contents_scale) const {
   canvas->discard();
   if (clear_canvas_with_debug_color_) {
     // Any non-painted areas in the content bounds will be left in this color.
@@ -125,7 +117,6 @@
                NULL,
                canvas_rect,
                contents_scale,
-               rendering_stats_instrumentation,
                false);
 }
 
@@ -229,7 +220,6 @@
     SkDrawPictureCallback* callback,
     const gfx::Rect& canvas_rect,
     float contents_scale,
-    RenderingStatsInstrumentation* rendering_stats_instrumentation,
     bool is_analysis) const {
   DCHECK(contents_scale >= min_contents_scale_);
 
@@ -265,34 +255,10 @@
     total_clip.Union(positive_clip);
 #endif  // NDEBUG
 
-    base::TimeDelta best_duration = base::TimeDelta::Max();
     int repeat_count = std::max(1, slow_down_raster_scale_factor_for_debug_);
-    int rasterized_pixel_count = 0;
 
-    for (int j = 0; j < repeat_count; ++j) {
-      base::TimeTicks start_time;
-      if (rendering_stats_instrumentation)
-        start_time = rendering_stats_instrumentation->StartRecording();
-
-      rasterized_pixel_count = picture->Raster(
-          canvas, callback, negated_clip_region, contents_scale);
-
-      if (rendering_stats_instrumentation) {
-        base::TimeDelta duration =
-            rendering_stats_instrumentation->EndRecording(start_time);
-        best_duration = std::min(best_duration, duration);
-      }
-    }
-
-    if (rendering_stats_instrumentation) {
-      if (is_analysis) {
-        rendering_stats_instrumentation->AddAnalysis(best_duration,
-                                                     rasterized_pixel_count);
-      } else {
-        rendering_stats_instrumentation->AddRaster(best_duration,
-                                                   rasterized_pixel_count);
-      }
-    }
+    for (int j = 0; j < repeat_count; ++j)
+      picture->Raster(canvas, callback, negated_clip_region, contents_scale);
   }
 
 #ifndef NDEBUG
@@ -316,7 +282,7 @@
   SkCanvas* canvas =
       recorder.beginRecording(tiling_rect.width(), tiling_rect.height());
   if (!tiling_rect.IsEmpty())
-    PlaybackToCanvas(canvas, tiling_rect, 1.0, NULL);
+    PlaybackToCanvas(canvas, tiling_rect, 1.0);
   skia::RefPtr<SkPicture> picture = skia::AdoptRef(recorder.endRecording());
 
   return picture;
@@ -325,8 +291,7 @@
 void PicturePileImpl::PerformSolidColorAnalysis(
     const gfx::Rect& content_rect,
     float contents_scale,
-    RasterSource::SolidColorAnalysis* analysis,
-    RenderingStatsInstrumentation* stats_instrumentation) const {
+    RasterSource::SolidColorAnalysis* analysis) const {
   DCHECK(analysis);
   TRACE_EVENT0("cc", "PicturePileImpl::PerformSolidColorAnalysis");
 
@@ -337,7 +302,7 @@
 
   skia::AnalysisCanvas canvas(layer_rect.width(), layer_rect.height());
 
-  RasterForAnalysis(&canvas, layer_rect, 1.0f, stats_instrumentation);
+  RasterForAnalysis(&canvas, layer_rect, 1.0f);
 
   analysis->is_solid_color = canvas.GetColorIfSolid(&analysis->solid_color);
 }
diff --git a/cc/resources/picture_pile_impl.h b/cc/resources/picture_pile_impl.h
index 1eb2187..9f350a9 100644
--- a/cc/resources/picture_pile_impl.h
+++ b/cc/resources/picture_pile_impl.h
@@ -32,16 +32,13 @@
   // When slow-down-raster-scale-factor is set to a value greater than 1, the
   // reported rasterize time (in stats_instrumentation) is the minimum measured
   // value over all runs.
-  void PlaybackToCanvas(
-      SkCanvas* canvas,
-      const gfx::Rect& canvas_rect,
-      float contents_scale,
-      RenderingStatsInstrumentation* stats_instrumentation) const override;
+  void PlaybackToCanvas(SkCanvas* canvas,
+                        const gfx::Rect& canvas_rect,
+                        float contents_scale) const override;
   void PerformSolidColorAnalysis(
       const gfx::Rect& content_rect,
       float contents_scale,
-      RasterSource::SolidColorAnalysis* analysis,
-      RenderingStatsInstrumentation* stats_instrumentation) const override;
+      RasterSource::SolidColorAnalysis* analysis) const override;
   void GatherPixelRefs(const gfx::Rect& content_rect,
                        float contents_scale,
                        std::vector<SkPixelRef*>* pixel_refs) const override;
@@ -50,11 +47,9 @@
   bool SuitableForDistanceFieldText() const override;
 
   // Raster into the canvas without applying clips.
-  void RasterDirect(
-      SkCanvas* canvas,
-      const gfx::Rect& canvas_rect,
-      float contents_scale,
-      RenderingStatsInstrumentation* rendering_stats_instrumentation) const;
+  void RasterDirect(SkCanvas* canvas,
+                    const gfx::Rect& canvas_rect,
+                    float contents_scale) const;
 
   // Tracing functionality.
   void DidBeginTracing();
@@ -101,11 +96,9 @@
 
   // Called when analyzing a tile. We can use AnalysisCanvas as
   // SkDrawPictureCallback, which allows us to early out from analysis.
-  void RasterForAnalysis(
-      skia::AnalysisCanvas* canvas,
-      const gfx::Rect& canvas_rect,
-      float contents_scale,
-      RenderingStatsInstrumentation* stats_instrumentation) const;
+  void RasterForAnalysis(skia::AnalysisCanvas* canvas,
+                         const gfx::Rect& canvas_rect,
+                         float contents_scale) const;
 
   void CoalesceRasters(const gfx::Rect& canvas_rect,
                        const gfx::Rect& content_rect,
@@ -117,7 +110,6 @@
       SkDrawPictureCallback* callback,
       const gfx::Rect& canvas_rect,
       float contents_scale,
-      RenderingStatsInstrumentation* rendering_stats_instrumentation,
       bool is_analysis) const;
 
   bool likely_to_be_used_for_transform_animation_;
diff --git a/cc/resources/picture_pile_impl_perftest.cc b/cc/resources/picture_pile_impl_perftest.cc
index e3bbac7..7e24724 100644
--- a/cc/resources/picture_pile_impl_perftest.cc
+++ b/cc/resources/picture_pile_impl_perftest.cc
@@ -6,7 +6,6 @@
 
 #include "cc/debug/lap_timer.h"
 #include "cc/test/fake_picture_pile_impl.h"
-#include "cc/test/fake_rendering_stats_instrumentation.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/perf/perf_test.h"
 
@@ -36,8 +35,7 @@
     RasterSource::SolidColorAnalysis analysis;
     timer_.Reset();
     do {
-      pile->PerformSolidColorAnalysis(
-          content_rect, contents_scale, &analysis, nullptr);
+      pile->PerformSolidColorAnalysis(content_rect, contents_scale, &analysis);
       timer_.NextLap();
     } while (!timer_.HasTimeLimitExpired());
 
@@ -55,13 +53,9 @@
     bitmap.allocN32Pixels(1, 1);
     SkCanvas canvas(bitmap);
 
-    FakeRenderingStatsInstrumentation rendering_stats_instrumentation;
     timer_.Reset();
     do {
-      pile->PlaybackToCanvas(&canvas,
-                             content_rect,
-                             contents_scale,
-                             &rendering_stats_instrumentation);
+      pile->PlaybackToCanvas(&canvas, content_rect, contents_scale);
       timer_.NextLap();
     } while (!timer_.HasTimeLimitExpired());
 
diff --git a/cc/resources/picture_pile_impl_unittest.cc b/cc/resources/picture_pile_impl_unittest.cc
index bd796a5..6dcf740 100644
--- a/cc/resources/picture_pile_impl_unittest.cc
+++ b/cc/resources/picture_pile_impl_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "base/memory/scoped_ptr.h"
 #include "cc/test/fake_picture_pile_impl.h"
-#include "cc/test/fake_rendering_stats_instrumentation.h"
 #include "cc/test/skia_common.h"
 #include "skia/ext/refptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -39,7 +38,7 @@
     for (int x = 0; x <= 300; x += 100) {
       RasterSource::SolidColorAnalysis analysis;
       gfx::Rect rect(x, y, 100, 100);
-      pile->PerformSolidColorAnalysis(rect, 1.0, &analysis, nullptr);
+      pile->PerformSolidColorAnalysis(rect, 1.0, &analysis);
       EXPECT_TRUE(analysis.is_solid_color) << rect.ToString();
       EXPECT_EQ(analysis.solid_color, solid_color) << rect.ToString();
     }
@@ -50,31 +49,27 @@
   pile->RerecordPile();
 
   RasterSource::SolidColorAnalysis analysis;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(0, 0, 100, 100), 1.0, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(0, 0, 100, 100), 1.0, &analysis);
   EXPECT_FALSE(analysis.is_solid_color);
 
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(100, 0, 100, 100), 1.0, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(100, 0, 100, 100), 1.0, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 
   // Boundaries should be clipped
   analysis.is_solid_color = false;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(350, 0, 100, 100), 1.0, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(350, 0, 100, 100), 1.0, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 
   analysis.is_solid_color = false;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(0, 350, 100, 100), 1.0, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(0, 350, 100, 100), 1.0, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 
   analysis.is_solid_color = false;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(350, 350, 100, 100), 1.0, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(350, 350, 100, 100), 1.0,
+                                  &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 }
@@ -102,7 +97,7 @@
     for (int x = 0; x <= 30; x += 10) {
       RasterSource::SolidColorAnalysis analysis;
       gfx::Rect rect(x, y, 10, 10);
-      pile->PerformSolidColorAnalysis(rect, 0.1f, &analysis, nullptr);
+      pile->PerformSolidColorAnalysis(rect, 0.1f, &analysis);
       EXPECT_TRUE(analysis.is_solid_color) << rect.ToString();
       EXPECT_EQ(analysis.solid_color, solid_color) << rect.ToString();
     }
@@ -113,31 +108,26 @@
   pile->RerecordPile();
 
   RasterSource::SolidColorAnalysis analysis;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(0, 0, 10, 10), 0.1f, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(0, 0, 10, 10), 0.1f, &analysis);
   EXPECT_FALSE(analysis.is_solid_color);
 
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(10, 0, 10, 10), 0.1f, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(10, 0, 10, 10), 0.1f, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 
   // Boundaries should be clipped
   analysis.is_solid_color = false;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(35, 0, 10, 10), 0.1f, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(35, 0, 10, 10), 0.1f, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 
   analysis.is_solid_color = false;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(0, 35, 10, 10), 0.1f, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(0, 35, 10, 10), 0.1f, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 
   analysis.is_solid_color = false;
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(35, 35, 10, 10), 0.1f, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(35, 35, 10, 10), 0.1f, &analysis);
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, solid_color);
 }
@@ -151,8 +141,7 @@
   RasterSource::SolidColorAnalysis analysis;
   EXPECT_FALSE(analysis.is_solid_color);
 
-  pile->PerformSolidColorAnalysis(
-      gfx::Rect(0, 0, 400, 400), 1.f, &analysis, nullptr);
+  pile->PerformSolidColorAnalysis(gfx::Rect(0, 0, 400, 400), 1.f, &analysis);
 
   EXPECT_TRUE(analysis.is_solid_color);
   EXPECT_EQ(analysis.solid_color, SkColorSetARGB(0, 0, 0, 0));
@@ -696,12 +685,7 @@
       SkCanvas canvas(bitmap);
       canvas.clear(SK_ColorTRANSPARENT);
 
-      FakeRenderingStatsInstrumentation rendering_stats_instrumentation;
-
-      pile->PlaybackToCanvas(&canvas,
-                             canvas_rect,
-                             contents_scale,
-                             &rendering_stats_instrumentation);
+      pile->PlaybackToCanvas(&canvas, canvas_rect, contents_scale);
 
       SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
       int num_pixels = bitmap.width() * bitmap.height();
@@ -748,9 +732,7 @@
   bitmap.allocN32Pixels(canvas_rect.width(), canvas_rect.height());
   SkCanvas canvas(bitmap);
 
-  FakeRenderingStatsInstrumentation rendering_stats_instrumentation;
-  pile->PlaybackToCanvas(
-      &canvas, canvas_rect, contents_scale, &rendering_stats_instrumentation);
+  pile->PlaybackToCanvas(&canvas, canvas_rect, contents_scale);
 
   SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
   int num_pixels = bitmap.width() * bitmap.height();
@@ -794,11 +776,7 @@
   bitmap.allocN32Pixels(content_bounds.width(), content_bounds.height());
   SkCanvas canvas(bitmap);
 
-  FakeRenderingStatsInstrumentation rendering_stats_instrumentation;
-  pile->PlaybackToCanvas(&canvas,
-                         gfx::Rect(content_bounds),
-                         contents_scale,
-                         &rendering_stats_instrumentation);
+  pile->PlaybackToCanvas(&canvas, gfx::Rect(content_bounds), contents_scale);
 
   for (int y = 0; y < bitmap.height(); y++) {
     for (int x = 0; x < bitmap.width(); x++) {
diff --git a/cc/resources/picture_pile_unittest.cc b/cc/resources/picture_pile_unittest.cc
index 98415ca..24bed3e 100644
--- a/cc/resources/picture_pile_unittest.cc
+++ b/cc/resources/picture_pile_unittest.cc
@@ -1456,5 +1456,17 @@
   EXPECT_FALSE(pile_.is_solid_color());
 }
 
+TEST_F(PicturePileTest, SetEmptyBounds) {
+  EXPECT_TRUE(pile_.is_solid_color());
+  EXPECT_FALSE(pile_.tiling_size().IsEmpty());
+  EXPECT_FALSE(pile_.picture_map().empty());
+  EXPECT_TRUE(pile_.HasRecordings());
+  pile_.SetEmptyBounds();
+  EXPECT_FALSE(pile_.is_solid_color());
+  EXPECT_TRUE(pile_.tiling_size().IsEmpty());
+  EXPECT_TRUE(pile_.picture_map().empty());
+  EXPECT_FALSE(pile_.HasRecordings());
+}
+
 }  // namespace
 }  // namespace cc
diff --git a/cc/resources/pixel_buffer_raster_worker_pool.cc b/cc/resources/pixel_buffer_raster_worker_pool.cc
index 26ab728..175e7d4 100644
--- a/cc/resources/pixel_buffer_raster_worker_pool.cc
+++ b/cc/resources/pixel_buffer_raster_worker_pool.cc
@@ -37,19 +37,13 @@
   // Overridden from RasterBuffer:
   void Playback(const RasterSource* raster_source,
                 const gfx::Rect& rect,
-                float scale,
-                RenderingStatsInstrumentation* stats) override {
+                float scale) override {
     if (!memory_)
       return;
 
-    RasterWorkerPool::PlaybackToMemory(memory_,
-                                       resource_->format(),
-                                       resource_->size(),
-                                       stride_,
-                                       raster_source,
-                                       rect,
-                                       scale,
-                                       stats);
+    RasterWorkerPool::PlaybackToMemory(memory_, resource_->format(),
+                                       resource_->size(), stride_,
+                                       raster_source, rect, scale);
   }
 
  private:
diff --git a/cc/resources/raster_buffer.h b/cc/resources/raster_buffer.h
index d9791e9..2a72203 100644
--- a/cc/resources/raster_buffer.h
+++ b/cc/resources/raster_buffer.h
@@ -10,7 +10,6 @@
 
 namespace cc {
 class RasterSource;
-class RenderingStatsInstrumentation;
 
 class CC_EXPORT RasterBuffer {
  public:
@@ -19,8 +18,7 @@
 
   virtual void Playback(const RasterSource* raster_source,
                         const gfx::Rect& rect,
-                        float scale,
-                        RenderingStatsInstrumentation* stats) = 0;
+                        float scale) = 0;
 };
 
 }  // namespace cc
diff --git a/cc/resources/raster_source.h b/cc/resources/raster_source.h
index 603b883..3e25408 100644
--- a/cc/resources/raster_source.h
+++ b/cc/resources/raster_source.h
@@ -15,8 +15,6 @@
 
 namespace cc {
 
-class RenderingStatsInstrumentation;
-
 class CC_EXPORT RasterSource : public base::RefCountedThreadSafe<RasterSource> {
  public:
   struct CC_EXPORT SolidColorAnalysis {
@@ -32,20 +30,16 @@
   // assumed that contents_scale has already been applied to this canvas.
   // Writes the total number of pixels rasterized and the time spent
   // rasterizing to the stats if the respective pointer is not nullptr.
-  // TODO(vmpstr): Remove RenderingStatsInstrumentation from the interface.
-  virtual void PlaybackToCanvas(
-      SkCanvas* canvas,
-      const gfx::Rect& canvas_rect,
-      float contents_scale,
-      RenderingStatsInstrumentation* rendering_stats_instrumentation) const = 0;
+  virtual void PlaybackToCanvas(SkCanvas* canvas,
+                                const gfx::Rect& canvas_rect,
+                                float contents_scale) const = 0;
 
   // Analyze to determine if the given rect at given scale is of solid color in
   // this raster source.
   virtual void PerformSolidColorAnalysis(
       const gfx::Rect& content_rect,
       float contents_scale,
-      SolidColorAnalysis* analysis,
-      RenderingStatsInstrumentation* rendering_stats_instrumentation) const = 0;
+      SolidColorAnalysis* analysis) const = 0;
 
   // Populate the given list with all SkPixelRefs that may overlap the given
   // rect at given scale.
diff --git a/cc/resources/raster_worker_pool.cc b/cc/resources/raster_worker_pool.cc
index bd91740..ca26edd 100644
--- a/cc/resources/raster_worker_pool.cc
+++ b/cc/resources/raster_worker_pool.cc
@@ -12,7 +12,9 @@
 #include "base/threading/simple_thread.h"
 #include "cc/base/scoped_ptr_deque.h"
 #include "cc/resources/raster_source.h"
+#include "skia/ext/refptr.h"
 #include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkSurface.h"
 
 namespace cc {
 namespace {
@@ -194,6 +196,22 @@
   InsertNodeForTask(graph, raster_task, priority, dependencies);
 }
 
+static bool IsSupportedPlaybackToMemoryFormat(ResourceFormat format) {
+  switch (format) {
+    case RGBA_4444:
+    case RGBA_8888:
+    case BGRA_8888:
+      return true;
+    case ALPHA_8:
+    case LUMINANCE_8:
+    case RGB_565:
+    case ETC1:
+      return false;
+  }
+  NOTREACHED();
+  return false;
+}
+
 // static
 void RasterWorkerPool::PlaybackToMemory(void* memory,
                                         ResourceFormat format,
@@ -201,45 +219,49 @@
                                         int stride,
                                         const RasterSource* raster_source,
                                         const gfx::Rect& rect,
-                                        float scale,
-                                        RenderingStatsInstrumentation* stats) {
-  SkBitmap bitmap;
-  switch (format) {
-    case RGBA_4444:
-      bitmap.allocN32Pixels(size.width(), size.height());
-      break;
-    case RGBA_8888:
-    case BGRA_8888: {
-      SkImageInfo info =
-          SkImageInfo::MakeN32Premul(size.width(), size.height());
-      if (!stride)
-        stride = info.minRowBytes();
-      bitmap.installPixels(info, memory, stride);
-      break;
-    }
-    case ALPHA_8:
-    case LUMINANCE_8:
-    case RGB_565:
-    case ETC1:
-      NOTREACHED();
-      break;
-  }
+                                        float scale) {
+  DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format;
 
-  SkCanvas canvas(bitmap);
-  raster_source->PlaybackToCanvas(&canvas, rect, scale, stats);
-
+  // Uses kPremul_SkAlphaType since the result is not known to be opaque.
+  SkImageInfo info =
+      SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType);
   SkColorType buffer_color_type = ResourceFormatToSkColorType(format);
-  if (buffer_color_type != bitmap.colorType()) {
-    SkImageInfo dst_info = bitmap.info();
-    dst_info.fColorType = buffer_color_type;
-    // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the
-    // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728
-    // is fixed.
-    const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes());
-    DCHECK_EQ(0u, dst_row_bytes % 4);
-    bool success = bitmap.readPixels(dst_info, memory, dst_row_bytes, 0, 0);
-    DCHECK_EQ(true, success);
+  bool needs_copy = buffer_color_type != info.colorType();
+
+  // TODO(danakj): Make a SkSurfaceProps with an SkPixelGeometry to enable or
+  // disable LCD text.
+  // TODO(danakj): Disable LCD text on Mac during layout tests:
+  // https://cs.chromium.org#chromium/src/third_party/WebKit/Source/platform/fonts/mac/FontPlatformDataMac.mm&l=55
+  // TODO(danakj): On Windows when LCD text is disabled, ask skia to draw LCD
+  // text offscreen and downsample it to AA text.
+  // https://cs.chromium.org#chromium/src/third_party/WebKit/Source/platform/fonts/win/FontPlatformDataWin.cpp&l=86
+  SkSurfaceProps* surface_props = nullptr;
+
+  if (!stride)
+    stride = info.minRowBytes();
+
+  if (!needs_copy) {
+    skia::RefPtr<SkSurface> surface = skia::AdoptRef(
+        SkSurface::NewRasterDirect(info, memory, stride, surface_props));
+    skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
+    raster_source->PlaybackToCanvas(canvas.get(), rect, scale);
+    return;
   }
+
+  skia::RefPtr<SkSurface> surface =
+      skia::AdoptRef(SkSurface::NewRaster(info, surface_props));
+  skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
+  raster_source->PlaybackToCanvas(canvas.get(), rect, scale);
+
+  SkImageInfo dst_info = info;
+  dst_info.fColorType = buffer_color_type;
+  // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the
+  // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728
+  // is fixed.
+  const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes());
+  DCHECK_EQ(0u, dst_row_bytes % 4);
+  bool success = canvas->readPixels(dst_info, memory, dst_row_bytes, 0, 0);
+  DCHECK_EQ(true, success);
 }
 
 }  // namespace cc
diff --git a/cc/resources/raster_worker_pool.h b/cc/resources/raster_worker_pool.h
index 30d26e5..5259f83 100644
--- a/cc/resources/raster_worker_pool.h
+++ b/cc/resources/raster_worker_pool.h
@@ -72,8 +72,7 @@
                                int stride,
                                const RasterSource* raster_source,
                                const gfx::Rect& rect,
-                               float scale,
-                               RenderingStatsInstrumentation* stats);
+                               float scale);
 
   // Type-checking downcast routine.
   virtual Rasterizer* AsRasterizer() = 0;
diff --git a/cc/resources/raster_worker_pool_unittest.cc b/cc/resources/raster_worker_pool_unittest.cc
index c8feb73..9aee8e7 100644
--- a/cc/resources/raster_worker_pool_unittest.cc
+++ b/cc/resources/raster_worker_pool_unittest.cc
@@ -59,8 +59,7 @@
 
   // Overridden from Task:
   void RunOnWorkerThread() override {
-    raster_buffer_->Playback(
-        picture_pile_.get(), gfx::Rect(0, 0, 1, 1), 1.0, NULL);
+    raster_buffer_->Playback(picture_pile_.get(), gfx::Rect(0, 0, 1, 1), 1.0);
   }
 
   // Overridden from RasterizerTask:
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
index c785cf6..8b6a72a 100644
--- a/cc/resources/tile_manager.cc
+++ b/cc/resources/tile_manager.cc
@@ -96,8 +96,8 @@
 
     DCHECK(raster_source);
 
-    raster_source->PerformSolidColorAnalysis(
-        content_rect_, contents_scale_, &analysis_, rendering_stats_);
+    raster_source->PerformSolidColorAnalysis(content_rect_, contents_scale_,
+                                             &analysis_);
 
     // Record the solid color prediction.
     UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed",
@@ -113,30 +113,10 @@
     devtools_instrumentation::ScopedLayerTask layer_task(
         devtools_instrumentation::kRasterTask, layer_id_);
 
-    base::TimeDelta prev_rasterize_time =
-        rendering_stats_->impl_thread_rendering_stats().rasterize_time;
-
-    // Only record rasterization time for highres tiles, because
-    // lowres tiles are not required for activation and therefore
-    // introduce noise in the measurement (sometimes they get rasterized
-    // before we draw and sometimes they aren't)
-    RenderingStatsInstrumentation* stats =
-        tile_resolution_ == HIGH_RESOLUTION ? rendering_stats_ : NULL;
     DCHECK(raster_source);
 
-    raster_buffer_->Playback(
-        raster_source_.get(), content_rect_, contents_scale_, stats);
-
-    if (rendering_stats_->record_rendering_stats()) {
-      base::TimeDelta current_rasterize_time =
-          rendering_stats_->impl_thread_rendering_stats().rasterize_time;
-      LOCAL_HISTOGRAM_CUSTOM_COUNTS(
-          "Renderer4.PictureRasterTimeUS",
-          (current_rasterize_time - prev_rasterize_time).InMicroseconds(),
-          0,
-          100000,
-          100);
-    }
+    raster_buffer_->Playback(raster_source_.get(), content_rect_,
+                             contents_scale_);
   }
 
   RasterSource::SolidColorAnalysis analysis_;
@@ -581,6 +561,7 @@
 
     ManagedTileState& mts = tile->managed_state();
     mts.scheduled_priority = schedule_priority++;
+    mts.resolution = priority.resolution;
 
     DCHECK(mts.draw_info.mode() ==
                ManagedTileState::DrawInfo::PICTURE_PILE_MODE ||
@@ -856,6 +837,7 @@
 }
 
 bool TileManager::IsReadyToActivate() const {
+  TRACE_EVENT0("cc", "TileManager::IsReadyToActivate");
   const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
 
   for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin();
diff --git a/cc/resources/zero_copy_raster_worker_pool.cc b/cc/resources/zero_copy_raster_worker_pool.cc
index 4030942..ca2bc9b 100644
--- a/cc/resources/zero_copy_raster_worker_pool.cc
+++ b/cc/resources/zero_copy_raster_worker_pool.cc
@@ -26,20 +26,14 @@
   // Overridden from RasterBuffer:
   void Playback(const RasterSource* raster_source,
                 const gfx::Rect& rect,
-                float scale,
-                RenderingStatsInstrumentation* stats) override {
+                float scale) override {
     gfx::GpuMemoryBuffer* gpu_memory_buffer = lock_.GetGpuMemoryBuffer();
     if (!gpu_memory_buffer)
       return;
 
-    RasterWorkerPool::PlaybackToMemory(gpu_memory_buffer->Map(),
-                                       resource_->format(),
-                                       resource_->size(),
-                                       gpu_memory_buffer->GetStride(),
-                                       raster_source,
-                                       rect,
-                                       scale,
-                                       stats);
+    RasterWorkerPool::PlaybackToMemory(
+        gpu_memory_buffer->Map(), resource_->format(), resource_->size(),
+        gpu_memory_buffer->GetStride(), raster_source, rect, scale);
     gpu_memory_buffer->Unmap();
   }
 
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc
index 32e61c5..600455f 100644
--- a/cc/surfaces/surface.cc
+++ b/cc/surfaces/surface.cc
@@ -9,6 +9,7 @@
 #include "cc/output/compositor_frame.h"
 #include "cc/output/copy_output_request.h"
 #include "cc/surfaces/surface_factory.h"
+#include "cc/surfaces/surface_id_allocator.h"
 #include "cc/surfaces/surface_manager.h"
 
 namespace cc {
@@ -57,7 +58,8 @@
     draw_callback_.Run();
   draw_callback_ = callback;
   factory_->manager()->DidSatisfySequences(
-      surface_id_, &current_frame_->metadata.satisfies_sequences);
+      SurfaceIdAllocator::NamespaceForId(surface_id_),
+      &current_frame_->metadata.satisfies_sequences);
 }
 
 void Surface::RequestCopyOfOutput(scoped_ptr<CopyOutputRequest> copy_request) {
@@ -111,6 +113,19 @@
   }
 }
 
+void Surface::AddDestructionDependency(SurfaceSequence sequence) {
+  destruction_dependencies_.push_back(sequence);
+}
+
+void Surface::SatisfyDestructionDependencies(
+    base::hash_set<SurfaceSequence>* sequences) {
+  destruction_dependencies_.erase(
+      std::remove_if(
+          destruction_dependencies_.begin(), destruction_dependencies_.end(),
+          [sequences](SurfaceSequence seq) { return !!sequences->erase(seq); }),
+      destruction_dependencies_.end());
+}
+
 void Surface::ClearCopyRequests() {
   if (current_frame_) {
     for (const auto& render_pass :
diff --git a/cc/surfaces/surface.h b/cc/surfaces/surface.h
index ffa5042..7b3fbc1 100644
--- a/cc/surfaces/surface.h
+++ b/cc/surfaces/surface.h
@@ -17,6 +17,7 @@
 #include "cc/output/copy_output_request.h"
 #include "cc/quads/render_pass_id.h"
 #include "cc/surfaces/surface_id.h"
+#include "cc/surfaces/surface_sequence.h"
 #include "cc/surfaces/surfaces_export.h"
 #include "ui/gfx/geometry/size.h"
 
@@ -57,6 +58,18 @@
 
   base::WeakPtr<SurfaceFactory> factory() { return factory_; }
 
+  // Add a SurfaceSequence that must be satisfied before the Surface is
+  // destroyed.
+  void AddDestructionDependency(SurfaceSequence sequence);
+
+  // Satisfy all destruction dependencies that are contained in sequences, and
+  // remove them from sequences.
+  void SatisfyDestructionDependencies(
+      base::hash_set<SurfaceSequence>* sequences);
+  size_t GetDestructionDependencyCount() const {
+    return destruction_dependencies_.size();
+  }
+
  private:
   void ClearCopyRequests();
 
@@ -66,6 +79,7 @@
   // TODO(jamesr): Support multiple frames in flight.
   scoped_ptr<CompositorFrame> current_frame_;
   int frame_index_;
+  std::vector<SurfaceSequence> destruction_dependencies_;
 
   base::Closure draw_callback_;
 
diff --git a/cc/surfaces/surface_factory.cc b/cc/surfaces/surface_factory.cc
index 88c5455..574f5d1 100644
--- a/cc/surfaces/surface_factory.cc
+++ b/cc/surfaces/surface_factory.cc
@@ -25,8 +25,8 @@
 }
 
 void SurfaceFactory::DestroyAll() {
-  for (auto& surface : surface_map_)
-    manager_->DeregisterSurface(surface.first);
+  for (auto it = surface_map_.begin(); it != surface_map_.end(); ++it)
+    manager_->Destroy(surface_map_.take(it));
   surface_map_.clear();
 }
 
@@ -41,17 +41,7 @@
   OwningSurfaceMap::iterator it = surface_map_.find(surface_id);
   DCHECK(it != surface_map_.end());
   DCHECK(it->second->factory().get() == this);
-  manager_->DeregisterSurface(surface_id);
-  surface_map_.erase(it);
-}
-
-void SurfaceFactory::DestroyOnSequence(
-    SurfaceId surface_id,
-    const std::set<SurfaceSequence>& dependency_set) {
-  OwningSurfaceMap::iterator it = surface_map_.find(surface_id);
-  DCHECK(it != surface_map_.end());
-  DCHECK(it->second->factory().get() == this);
-  manager_->DestroyOnSequence(surface_map_.take_and_erase(it), dependency_set);
+  manager_->Destroy(surface_map_.take_and_erase(it));
 }
 
 void SurfaceFactory::SubmitFrame(SurfaceId surface_id,
diff --git a/cc/surfaces/surface_factory.h b/cc/surfaces/surface_factory.h
index 13d1d63..8e9211c 100644
--- a/cc/surfaces/surface_factory.h
+++ b/cc/surfaces/surface_factory.h
@@ -40,8 +40,6 @@
 
   void Create(SurfaceId surface_id, const gfx::Size& size);
   void Destroy(SurfaceId surface_id);
-  void DestroyOnSequence(SurfaceId surface_id,
-                         const std::set<SurfaceSequence>& dependency_set);
   void DestroyAll();
   // A frame can only be submitted to a surface created by this factory,
   // although the frame may reference surfaces created by other factories.
diff --git a/cc/surfaces/surface_factory_unittest.cc b/cc/surfaces/surface_factory_unittest.cc
index e36636c..14a25fd 100644
--- a/cc/surfaces/surface_factory_unittest.cc
+++ b/cc/surfaces/surface_factory_unittest.cc
@@ -381,9 +381,9 @@
   factory_.Create(id2, gfx::Size(5, 5));
 
   // Check that waiting before the sequence is satisfied works.
-  std::set<SurfaceSequence> sequence;
-  sequence.insert(SurfaceSequence(0, 4));
-  factory_.DestroyOnSequence(id2, sequence);
+  manager_.GetSurfaceForId(id2)
+      ->AddDestructionDependency(SurfaceSequence(0, 4));
+  factory_.Destroy(id2);
 
   scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
   scoped_ptr<CompositorFrame> frame(new CompositorFrame);
@@ -396,10 +396,10 @@
 
   // Check that waiting after the sequence is satisfied works.
   factory_.Create(id2, gfx::Size(5, 5));
-  sequence.clear();
-  sequence.insert(SurfaceSequence(0, 6));
   DCHECK(manager_.GetSurfaceForId(id2));
-  factory_.DestroyOnSequence(id2, sequence);
+  manager_.GetSurfaceForId(id2)
+      ->AddDestructionDependency(SurfaceSequence(0, 6));
+  factory_.Destroy(id2);
   DCHECK(!manager_.GetSurfaceForId(id2));
 }
 
diff --git a/cc/surfaces/surface_manager.cc b/cc/surfaces/surface_manager.cc
index 920f464..050f04b 100644
--- a/cc/surfaces/surface_manager.cc
+++ b/cc/surfaces/surface_manager.cc
@@ -19,8 +19,8 @@
   for (SurfaceDestroyList::iterator it = surfaces_to_destroy_.begin();
        it != surfaces_to_destroy_.end();
        ++it) {
-    DeregisterSurface(it->first->surface_id());
-    delete it->first;
+    DeregisterSurface((*it)->surface_id());
+    delete *it;
   }
 }
 
@@ -38,20 +38,19 @@
   surface_map_.erase(it);
 }
 
-void SurfaceManager::DestroyOnSequence(
-    scoped_ptr<Surface> surface,
-    const std::set<SurfaceSequence>& dependency_set) {
-  surfaces_to_destroy_.push_back(make_pair(surface.release(), dependency_set));
+void SurfaceManager::Destroy(scoped_ptr<Surface> surface) {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  surfaces_to_destroy_.push_back(surface.release());
   SearchForSatisfaction();
 }
 
-void SurfaceManager::DidSatisfySequences(SurfaceId id,
+void SurfaceManager::DidSatisfySequences(uint32_t id_namespace,
                                          std::vector<uint32_t>* sequence) {
+  DCHECK(thread_checker_.CalledOnValidThread());
   for (std::vector<uint32_t>::iterator it = sequence->begin();
        it != sequence->end();
        ++it) {
-    satisfied_sequences_.insert(
-        SurfaceSequence(SurfaceIdAllocator::NamespaceForId(id), *it));
+    satisfied_sequences_.insert(SurfaceSequence(id_namespace, *it));
   }
   sequence->clear();
   SearchForSatisfaction();
@@ -60,21 +59,9 @@
 void SurfaceManager::SearchForSatisfaction() {
   for (SurfaceDestroyList::iterator dest_it = surfaces_to_destroy_.begin();
        dest_it != surfaces_to_destroy_.end();) {
-    std::set<SurfaceSequence>& dependency_set = dest_it->second;
-
-    for (std::set<SurfaceSequence>::iterator it = dependency_set.begin();
-         it != dependency_set.end();) {
-      if (satisfied_sequences_.count(*it) > 0) {
-        satisfied_sequences_.erase(*it);
-        std::set<SurfaceSequence>::iterator old_it = it;
-        ++it;
-        dependency_set.erase(old_it);
-      } else {
-        ++it;
-      }
-    }
-    if (dependency_set.empty()) {
-      scoped_ptr<Surface> surf(dest_it->first);
+    (*dest_it)->SatisfyDestructionDependencies(&satisfied_sequences_);
+    if (!(*dest_it)->GetDestructionDependencyCount()) {
+      scoped_ptr<Surface> surf(*dest_it);
       DeregisterSurface(surf->surface_id());
       dest_it = surfaces_to_destroy_.erase(dest_it);
     } else {
diff --git a/cc/surfaces/surface_manager.h b/cc/surfaces/surface_manager.h
index 66db9d9..d630352 100644
--- a/cc/surfaces/surface_manager.h
+++ b/cc/surfaces/surface_manager.h
@@ -6,7 +6,6 @@
 #define CC_SURFACES_SURFACE_MANAGER_H_
 
 #include <list>
-#include <set>
 #include <vector>
 
 #include "base/containers/hash_tables.h"
@@ -31,8 +30,7 @@
   void DeregisterSurface(SurfaceId surface_id);
 
   // Destroy the Surface once a set of sequence numbers has been satisfied.
-  void DestroyOnSequence(scoped_ptr<Surface> surface,
-                         const std::set<SurfaceSequence>& dependency_set);
+  void Destroy(scoped_ptr<Surface> surface);
 
   Surface* GetSurfaceForId(SurfaceId surface_id);
 
@@ -46,8 +44,10 @@
 
   void SurfaceModified(SurfaceId surface_id);
 
-  // A frame for a surface satisfies a set of sequence numbers.
-  void DidSatisfySequences(SurfaceId id, std::vector<uint32_t>* sequence);
+  // A frame for a surface satisfies a set of sequence numbers in a particular
+  // id namespace.
+  void DidSatisfySequences(uint32_t id_namespace,
+                           std::vector<uint32_t>* sequence);
 
  private:
   void SearchForSatisfaction();
@@ -59,13 +59,12 @@
 
   // List of surfaces to be destroyed, along with what sequences they're still
   // waiting on.
-  typedef std::list<std::pair<Surface*, std::set<SurfaceSequence>>>
-      SurfaceDestroyList;
+  typedef std::list<Surface*> SurfaceDestroyList;
   SurfaceDestroyList surfaces_to_destroy_;
 
   // Set of SurfaceSequences that have been satisfied by a frame but not yet
   // waited on.
-  std::set<SurfaceSequence> satisfied_sequences_;
+  base::hash_set<SurfaceSequence> satisfied_sequences_;
 
   DISALLOW_COPY_AND_ASSIGN(SurfaceManager);
 };
diff --git a/cc/surfaces/surface_sequence.h b/cc/surfaces/surface_sequence.h
index 4c99e45..72f4bc9 100644
--- a/cc/surfaces/surface_sequence.h
+++ b/cc/surfaces/surface_sequence.h
@@ -5,6 +5,8 @@
 #ifndef CC_SURFACES_SURFACE_SEQUENCE_H_
 #define CC_SURFACES_SURFACE_SEQUENCE_H_
 
+#include "base/containers/hash_tables.h"
+
 namespace cc {
 
 // A per-surface-namespace sequence number that's used to coordinate
@@ -14,6 +16,7 @@
   SurfaceSequence() : id_namespace(0u), sequence(0u) {}
   SurfaceSequence(uint32_t id_namespace, uint32_t sequence)
       : id_namespace(id_namespace), sequence(sequence) {}
+  bool is_null() const { return id_namespace == 0u && sequence == 0u; }
 
   uint32_t id_namespace;
   uint32_t sequence;
@@ -35,4 +38,13 @@
 
 }  // namespace cc
 
+namespace BASE_HASH_NAMESPACE {
+template <>
+struct hash<cc::SurfaceSequence> {
+  size_t operator()(cc::SurfaceSequence key) const {
+    return base::HashPair(key.id_namespace, key.sequence);
+  }
+};
+}  // namespace BASE_HASH_NAMESPACE
+
 #endif  // CC_SURFACES_SURFACE_SEQUENCE_H_
diff --git a/cc/test/fake_content_layer_client.cc b/cc/test/fake_content_layer_client.cc
index d97869c..5463aed 100644
--- a/cc/test/fake_content_layer_client.cc
+++ b/cc/test/fake_content_layer_client.cc
@@ -40,17 +40,15 @@
     canvas->drawBitmap(it->bitmap, it->point.x(), it->point.y(), &it->paint);
   }
 
-  // Add a rectangle to the middle that doesn't fill |paint_rect| so that solid
-  // color analysis will fail.
   if (fill_with_nonsolid_color_) {
     gfx::RectF draw_rect = paint_rect;
-    draw_rect.Inset(draw_rect.width() / 4.0f, draw_rect.height() / 4.0f);
-    SkPaint paint;
-    canvas->drawRectCoords(draw_rect.x(),
-                           draw_rect.y(),
-                           draw_rect.right(),
-                           draw_rect.bottom(),
-                           paint);
+    bool red = true;
+    while (!draw_rect.IsEmpty()) {
+      SkPaint paint;
+      paint.setColor(red ? SK_ColorRED : SK_ColorBLUE);
+      canvas->drawRect(gfx::RectFToSkRect(draw_rect), paint);
+      draw_rect.Inset(1, 1);
+    }
   }
 }
 
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index 3898156..af7eb5b 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -128,7 +128,9 @@
       id_(s_layer_tree_host_sequence_number.GetNext() + 1),
       next_commit_forces_redraw_(false),
       shared_bitmap_manager_(shared_bitmap_manager),
-      gpu_memory_buffer_manager_(gpu_memory_buffer_manager) {
+      gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
+      surface_id_namespace_(0u),
+      next_surface_sequence_(1u) {
   if (settings_.accelerated_animation_enabled)
     animation_registrar_ = AnimationRegistrar::Create();
   rendering_stats_instrumentation_->set_record_rendering_stats(
@@ -167,15 +169,15 @@
 LayerTreeHost::~LayerTreeHost() {
   TRACE_EVENT0("cc", "LayerTreeHost::~LayerTreeHost");
 
-  DCHECK(swap_promise_monitor_.empty());
-
-  BreakSwapPromises(SwapPromise::COMMIT_FAILS);
-
   overhang_ui_resource_ = nullptr;
 
   if (root_layer_.get())
     root_layer_->SetLayerTreeHost(NULL);
 
+  DCHECK(swap_promise_monitor_.empty());
+
+  BreakSwapPromises(SwapPromise::COMMIT_FAILS);
+
   if (proxy_) {
     DCHECK(proxy_->IsMainThread());
     proxy_->Stop();
@@ -1336,4 +1338,12 @@
   swap_promise_list_.clear();
 }
 
+void LayerTreeHost::set_surface_id_namespace(uint32_t id_namespace) {
+  surface_id_namespace_ = id_namespace;
+}
+
+SurfaceSequence LayerTreeHost::CreateSurfaceSequence() {
+  return SurfaceSequence(surface_id_namespace_, next_surface_sequence_++);
+}
+
 }  // namespace cc
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index 1096416..a56a6cd 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -34,6 +34,7 @@
 #include "cc/output/output_surface.h"
 #include "cc/resources/resource_format.h"
 #include "cc/resources/scoped_ui_resource.h"
+#include "cc/surfaces/surface_sequence.h"
 #include "cc/trees/layer_tree_host_client.h"
 #include "cc/trees/layer_tree_host_common.h"
 #include "cc/trees/layer_tree_settings.h"
@@ -307,6 +308,9 @@
 
   size_t num_queued_swap_promises() const { return swap_promise_list_.size(); }
 
+  void set_surface_id_namespace(uint32_t id_namespace);
+  SurfaceSequence CreateSurfaceSequence();
+
  protected:
   LayerTreeHost(LayerTreeHostClient* client,
                 SharedBitmapManager* shared_bitmap_manager,
@@ -464,6 +468,9 @@
   ScopedPtrVector<SwapPromise> swap_promise_list_;
   std::set<SwapPromiseMonitor*> swap_promise_monitor_;
 
+  uint32_t surface_id_namespace_;
+  uint32_t next_surface_sequence_;
+
   DISALLOW_COPY_AND_ASSIGN(LayerTreeHost);
 };
 
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 77c484f..d2041ac 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -152,8 +152,14 @@
 
 unsigned GetMapImageTextureTarget(
     const ContextProvider::Capabilities& context_capabilities) {
+// TODO(reveman): This should be a setting passed to the compositor instead
+// of hard-coded here. The target that need to be used depends on our choice
+// of GpuMemoryBuffer type. Note: SURFACE_TEXTURE needs EXTERNAL_OES,
+// IO_SURFACE needs RECTANGLE_ARB. crbug.com/431059
+#if defined(OS_ANDROID)
   if (context_capabilities.gpu.egl_image_external)
     return GL_TEXTURE_EXTERNAL_OES;
+#endif
   if (context_capabilities.gpu.texture_rectangle)
     return GL_TEXTURE_RECTANGLE_ARB;
 
@@ -1874,9 +1880,11 @@
   if (debug_state_.continuous_painting) {
     const RenderingStats& stats =
         rendering_stats_instrumentation_->GetRenderingStats();
-    paint_time_counter_->SavePaintTime(stats.main_stats.paint_time +
-                                       stats.main_stats.record_time +
-                                       stats.impl_stats.rasterize_time);
+    // TODO(hendrikw): This requires a different metric when we commit directly
+    // to the active tree.  See crbug.com/429311.
+    paint_time_counter_->SavePaintTime(
+        stats.impl_stats.commit_to_activate_duration.GetLastTimeDelta() +
+        stats.impl_stats.draw_duration.GetLastTimeDelta());
   }
 
   if (time_source_client_adapter_ && time_source_client_adapter_->Active())
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 7d39b9d..5d2d939 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -46,7 +46,6 @@
 #include "cc/test/fake_picture_layer_impl.h"
 #include "cc/test/fake_picture_pile_impl.h"
 #include "cc/test/fake_proxy.h"
-#include "cc/test/fake_rendering_stats_instrumentation.h"
 #include "cc/test/geometry_test_utils.h"
 #include "cc/test/layer_test_common.h"
 #include "cc/test/render_pass_test_common.h"
@@ -5948,7 +5947,7 @@
 
 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer {
  public:
-  using GLRenderer::SetupQuadForAntialiasing;
+  using GLRenderer::ShouldAntialiasQuad;
 };
 
 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) {
@@ -6006,11 +6005,9 @@
   ASSERT_LE(1u, frame.render_passes[0]->quad_list.size());
   const DrawQuad* quad = frame.render_passes[0]->quad_list.front();
 
-  float edge[24];
-  gfx::QuadF device_layer_quad;
   bool antialiased =
-      GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing(
-          quad->quadTransform(), quad, &device_layer_quad, edge);
+      GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad(
+          quad->quadTransform(), quad, false);
   EXPECT_FALSE(antialiased);
 
   host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index 2063217..0859d86 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -4168,7 +4168,7 @@
       bool fallback) override {
     scoped_refptr<TestContextProvider> context_provider =
         TestContextProvider::Create();
-    context_provider->SetMaxTransferBufferUsageBytes(1024 * 1024);
+    context_provider->SetMaxTransferBufferUsageBytes(512 * 512);
     if (delegating_renderer())
       return FakeOutputSurface::CreateDelegating3d(context_provider);
     else
@@ -4179,7 +4179,7 @@
     client_.set_fill_with_nonsolid_color(true);
     scoped_refptr<FakePictureLayer> root_layer =
         FakePictureLayer::Create(&client_);
-    root_layer->SetBounds(gfx::Size(6000, 6000));
+    root_layer->SetBounds(gfx::Size(1024, 1024));
     root_layer->SetIsDrawable(true);
 
     layer_tree_host()->SetRootLayer(root_layer);
@@ -4193,7 +4193,7 @@
 
     // Expect that the transfer buffer memory used is equal to the
     // MaxTransferBufferUsageBytes value set in CreateOutputSurface.
-    EXPECT_EQ(1024 * 1024u, context->max_used_transfer_buffer_usage_bytes());
+    EXPECT_EQ(512 * 512u, context->max_used_transfer_buffer_usage_bytes());
     EndTest();
   }
 
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 304b9fb..6b2b37f 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -506,12 +506,9 @@
   }
 
   {
-    TRACE_EVENT2("cc",
-                 "LayerTreeImpl::UpdateTilePriorities",
-                 "IsActive",
-                 IsActiveTree(),
-                 "SourceFrameNumber",
-                 source_frame_number_);
+    TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateTilePriorities", "IsActive",
+                       IsActiveTree(), "SourceFrameNumber",
+                       source_frame_number_);
     scoped_ptr<OcclusionTracker<LayerImpl>> occlusion_tracker;
     if (settings().use_occlusion_for_tile_prioritization) {
       occlusion_tracker.reset(new OcclusionTracker<LayerImpl>(
@@ -528,6 +525,7 @@
     // draw properties) and not because any ordering is required.
     typedef LayerIterator<LayerImpl> LayerIteratorType;
     LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list_);
+    size_t layers_updated_count = 0;
     for (LayerIteratorType it =
              LayerIteratorType::Begin(&render_surface_layer_list_);
          it != end;
@@ -544,6 +542,7 @@
       if (it.represents_itself()) {
         layer->UpdateTiles(occlusion_in_content_space,
                            resourceless_software_draw);
+        ++layers_updated_count;
       }
 
       if (!it.represents_contributing_render_surface()) {
@@ -555,15 +554,20 @@
       if (layer->mask_layer()) {
         layer->mask_layer()->UpdateTiles(occlusion_in_content_space,
                                          resourceless_software_draw);
+        ++layers_updated_count;
       }
       if (layer->replica_layer() && layer->replica_layer()->mask_layer()) {
         layer->replica_layer()->mask_layer()->UpdateTiles(
             occlusion_in_content_space, resourceless_software_draw);
+        ++layers_updated_count;
       }
 
       if (occlusion_tracker)
         occlusion_tracker->LeaveLayer(it);
     }
+
+    TRACE_EVENT_END1("cc", "LayerTreeImpl::UpdateTilePriorities",
+                     "layers_updated_count", layers_updated_count);
   }
 
   DCHECK(!needs_update_draw_properties_) <<
diff --git a/cc/trees/tree_synchronizer_unittest.cc b/cc/trees/tree_synchronizer_unittest.cc
index 2715727..d48f821 100644
--- a/cc/trees/tree_synchronizer_unittest.cc
+++ b/cc/trees/tree_synchronizer_unittest.cc
@@ -16,6 +16,7 @@
 #include "cc/test/animation_test_common.h"
 #include "cc/test/fake_impl_proxy.h"
 #include "cc/test/fake_layer_tree_host.h"
+#include "cc/test/fake_rendering_stats_instrumentation.h"
 #include "cc/test/test_shared_bitmap_manager.h"
 #include "cc/trees/proxy.h"
 #include "cc/trees/single_thread_proxy.h"
diff --git a/gin/object_template_builder.h b/gin/object_template_builder.h
index 3d025a9..1305d5c 100644
--- a/gin/object_template_builder.h
+++ b/gin/object_template_builder.h
@@ -71,7 +71,7 @@
 // This specialization allows people to construct function templates directly if
 // they need to do fancier stuff.
 template<>
-struct GIN_EXPORT CallbackTraits<v8::Handle<v8::FunctionTemplate> > {
+struct CallbackTraits<v8::Handle<v8::FunctionTemplate> > {
   static v8::Handle<v8::FunctionTemplate> CreateTemplate(
       v8::Handle<v8::FunctionTemplate> templ) {
     return templ;
diff --git a/gpu/command_buffer/client/client_test_helper.cc b/gpu/command_buffer/client/client_test_helper.cc
index 8c633ef..3c50f6b 100644
--- a/gpu/command_buffer/client/client_test_helper.cc
+++ b/gpu/command_buffer/client/client_test_helper.cc
@@ -15,7 +15,7 @@
 
 namespace gpu {
 
-MockCommandBufferBase::MockCommandBufferBase() {
+MockCommandBufferBase::MockCommandBufferBase() : put_offset_(0) {
 }
 
 MockCommandBufferBase::~MockCommandBufferBase() {
@@ -40,7 +40,7 @@
 void MockCommandBufferBase::WaitForTokenInRange(int32 start, int32 end) {}
 
 void MockCommandBufferBase::WaitForGetOffsetInRange(int32 start, int32 end) {
-  state_.get_offset = state_.put_offset;
+  state_.get_offset = put_offset_;
   OnFlush();
 }
 
@@ -48,7 +48,6 @@
   ring_buffer_buffer_ = GetTransferBuffer(transfer_buffer_id);
   ring_buffer_ =
       static_cast<CommandBufferEntry*>(ring_buffer_buffer_->memory());
-  state_.num_entries = ring_buffer_buffer_->size() / sizeof(ring_buffer_[0]);
   state_.token = 10000;  // All token checks in the tests should pass.
 }
 
@@ -91,7 +90,7 @@
 }
 
 void MockCommandBufferBase::FlushHelper(int32 put_offset) {
-  state_.put_offset = put_offset;
+  put_offset_ = put_offset;
 }
 
 void MockCommandBufferBase::SetToken(int32 token) {
@@ -110,6 +109,10 @@
   state_.context_lost_reason = reason;
 }
 
+int32 MockCommandBufferBase::GetPutOffset() {
+  return put_offset_;
+}
+
 // GCC requires these declarations, but MSVC requires they not be present
 #ifndef _MSC_VER
 const int32 MockCommandBufferBase::kTransferBufferBaseId;
diff --git a/gpu/command_buffer/client/client_test_helper.h b/gpu/command_buffer/client/client_test_helper.h
index 2cf18e6..6778a83 100644
--- a/gpu/command_buffer/client/client_test_helper.h
+++ b/gpu/command_buffer/client/client_test_helper.h
@@ -41,6 +41,7 @@
   void SetToken(int32 token) override;
   void SetParseError(error::Error error) override;
   void SetContextLostReason(error::ContextLostReason reason) override;
+  int32 GetPutOffset() override;
 
   // Get's the Id of the next transfer buffer that will be returned
   // by CreateTransferBuffer. This is useful for testing expected ids.
@@ -56,6 +57,7 @@
   CommandBufferEntry* ring_buffer_;
   scoped_refptr<Buffer> ring_buffer_buffer_;
   State state_;
+  int32 put_offset_;
 };
 
 class MockClientCommandBuffer : public MockCommandBufferBase {
diff --git a/gpu/command_buffer/client/cmd_buffer_helper_test.cc b/gpu/command_buffer/client/cmd_buffer_helper_test.cc
index 3ff9d3a..fe68887 100644
--- a/gpu/command_buffer/client/cmd_buffer_helper_test.cc
+++ b/gpu/command_buffer/client/cmd_buffer_helper_test.cc
@@ -241,7 +241,7 @@
   }
 
   int32 GetPutOffset() {
-    return command_buffer_->GetLastState().put_offset;
+    return command_buffer_->GetPutOffset();
   }
 
   int32 GetHelperGetOffset() { return helper_->get_offset(); }
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index 392bb22..56f1880 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -124,8 +124,8 @@
                          GLsizei width,
                          GLsizei height,
                          GLint border) {
-  gles2::GetGLContext()->CopyTexImage2D(
-      target, level, internalformat, x, y, width, height, border);
+  gles2::GetGLContext()->CopyTexImage2D(target, level, internalformat, x, y,
+                                        width, height, border);
 }
 void GLES2CopyTexSubImage2D(GLenum target,
                             GLint level,
@@ -135,8 +135,8 @@
                             GLint y,
                             GLsizei width,
                             GLsizei height) {
-  gles2::GetGLContext()->CopyTexSubImage2D(
-      target, level, xoffset, yoffset, x, y, width, height);
+  gles2::GetGLContext()->CopyTexSubImage2D(target, level, xoffset, yoffset, x,
+                                           y, width, height);
 }
 GLuint GLES2CreateProgram() {
   return gles2::GetGLContext()->CreateProgram();
@@ -216,8 +216,8 @@
                                GLenum textarget,
                                GLuint texture,
                                GLint level) {
-  gles2::GetGLContext()->FramebufferTexture2D(
-      target, attachment, textarget, texture, level);
+  gles2::GetGLContext()->FramebufferTexture2D(target, attachment, textarget,
+                                              texture, level);
 }
 void GLES2FrontFace(GLenum mode) {
   gles2::GetGLContext()->FrontFace(mode);
@@ -244,8 +244,8 @@
                           GLint* size,
                           GLenum* type,
                           char* name) {
-  gles2::GetGLContext()->GetActiveAttrib(
-      program, index, bufsize, length, size, type, name);
+  gles2::GetGLContext()->GetActiveAttrib(program, index, bufsize, length, size,
+                                         type, name);
 }
 void GLES2GetActiveUniform(GLuint program,
                            GLuint index,
@@ -254,8 +254,8 @@
                            GLint* size,
                            GLenum* type,
                            char* name) {
-  gles2::GetGLContext()->GetActiveUniform(
-      program, index, bufsize, length, size, type, name);
+  gles2::GetGLContext()->GetActiveUniform(program, index, bufsize, length, size,
+                                          type, name);
 }
 void GLES2GetAttachedShaders(GLuint program,
                              GLsizei maxcount,
@@ -282,8 +282,8 @@
                                               GLenum attachment,
                                               GLenum pname,
                                               GLint* params) {
-  gles2::GetGLContext()->GetFramebufferAttachmentParameteriv(
-      target, attachment, pname, params);
+  gles2::GetGLContext()->GetFramebufferAttachmentParameteriv(target, attachment,
+                                                             pname, params);
 }
 void GLES2GetIntegerv(GLenum pname, GLint* params) {
   gles2::GetGLContext()->GetIntegerv(pname, params);
@@ -315,8 +315,8 @@
                                    GLenum precisiontype,
                                    GLint* range,
                                    GLint* precision) {
-  gles2::GetGLContext()->GetShaderPrecisionFormat(
-      shadertype, precisiontype, range, precision);
+  gles2::GetGLContext()->GetShaderPrecisionFormat(shadertype, precisiontype,
+                                                  range, precision);
 }
 void GLES2GetShaderSource(GLuint shader,
                           GLsizei bufsize,
@@ -403,8 +403,8 @@
                               GLenum internalformat,
                               GLsizei width,
                               GLsizei height) {
-  gles2::GetGLContext()->RenderbufferStorage(
-      target, internalformat, width, height);
+  gles2::GetGLContext()->RenderbufferStorage(target, internalformat, width,
+                                             height);
 }
 void GLES2SampleCoverage(GLclampf value, GLboolean invert) {
   gles2::GetGLContext()->SampleCoverage(value, invert);
@@ -464,15 +464,8 @@
                      GLenum format,
                      GLenum type,
                      const void* pixels) {
-  gles2::GetGLContext()->TexImage2D(target,
-                                    level,
-                                    internalformat,
-                                    width,
-                                    height,
-                                    border,
-                                    format,
-                                    type,
-                                    pixels);
+  gles2::GetGLContext()->TexImage2D(target, level, internalformat, width,
+                                    height, border, format, type, pixels);
 }
 void GLES2TexParameterf(GLenum target, GLenum pname, GLfloat param) {
   gles2::GetGLContext()->TexParameterf(target, pname, param);
@@ -495,8 +488,8 @@
                         GLenum format,
                         GLenum type,
                         const void* pixels) {
-  gles2::GetGLContext()->TexSubImage2D(
-      target, level, xoffset, yoffset, width, height, format, type, pixels);
+  gles2::GetGLContext()->TexSubImage2D(target, level, xoffset, yoffset, width,
+                                       height, format, type, pixels);
 }
 void GLES2Uniform1f(GLint location, GLfloat x) {
   gles2::GetGLContext()->Uniform1f(location, x);
@@ -608,8 +601,8 @@
                               GLboolean normalized,
                               GLsizei stride,
                               const void* ptr) {
-  gles2::GetGLContext()->VertexAttribPointer(
-      indx, size, type, normalized, stride, ptr);
+  gles2::GetGLContext()->VertexAttribPointer(indx, size, type, normalized,
+                                             stride, ptr);
 }
 void GLES2Viewport(GLint x, GLint y, GLsizei width, GLsizei height) {
   gles2::GetGLContext()->Viewport(x, y, width, height);
@@ -657,8 +650,8 @@
                           GLenum internalFormat,
                           GLsizei width,
                           GLsizei height) {
-  gles2::GetGLContext()->TexStorage2DEXT(
-      target, levels, internalFormat, width, height);
+  gles2::GetGLContext()->TexStorage2DEXT(target, levels, internalFormat, width,
+                                         height);
 }
 void GLES2GenQueriesEXT(GLsizei n, GLuint* queries) {
   gles2::GetGLContext()->GenQueriesEXT(n, queries);
@@ -709,8 +702,8 @@
                                         GLsizei count,
                                         GLenum type,
                                         GLuint offset) {
-  return gles2::GetGLContext()->GetMaxValueInBufferCHROMIUM(
-      buffer_id, count, type, offset);
+  return gles2::GetGLContext()->GetMaxValueInBufferCHROMIUM(buffer_id, count,
+                                                            type, offset);
 }
 GLboolean GLES2EnableFeatureCHROMIUM(const char* feature) {
   return gles2::GetGLContext()->EnableFeatureCHROMIUM(feature);
@@ -725,8 +718,8 @@
                                     GLintptr offset,
                                     GLsizeiptr size,
                                     GLenum access) {
-  return gles2::GetGLContext()->MapBufferSubDataCHROMIUM(
-      target, offset, size, access);
+  return gles2::GetGLContext()->MapBufferSubDataCHROMIUM(target, offset, size,
+                                                         access);
 }
 void GLES2UnmapBufferSubDataCHROMIUM(const void* mem) {
   gles2::GetGLContext()->UnmapBufferSubDataCHROMIUM(mem);
@@ -762,8 +755,8 @@
                                       GLuint count,
                                       GLint* results,
                                       GLsizeiptr size) {
-  gles2::GetGLContext()->GetMultipleIntegervCHROMIUM(
-      pnames, count, results, size);
+  gles2::GetGLContext()->GetMultipleIntegervCHROMIUM(pnames, count, results,
+                                                     size);
 }
 void GLES2GetProgramInfoCHROMIUM(GLuint program,
                                  GLsizei bufsize,
@@ -778,8 +771,8 @@
                                 GLsizei width,
                                 GLsizei height,
                                 GLenum internalformat) {
-  return gles2::GetGLContext()->CreateImageCHROMIUM(
-      buffer, width, height, internalformat);
+  return gles2::GetGLContext()->CreateImageCHROMIUM(buffer, width, height,
+                                                    internalformat);
 }
 void GLES2DestroyImageCHROMIUM(GLuint image_id) {
   gles2::GetGLContext()->DestroyImageCHROMIUM(image_id);
@@ -795,8 +788,8 @@
                                          GLsizei bufsize,
                                          GLsizei* length,
                                          char* source) {
-  gles2::GetGLContext()->GetTranslatedShaderSourceANGLE(
-      shader, bufsize, length, source);
+  gles2::GetGLContext()->GetTranslatedShaderSourceANGLE(shader, bufsize, length,
+                                                        source);
 }
 void GLES2PostSubBufferCHROMIUM(GLint x, GLint y, GLint width, GLint height) {
   gles2::GetGLContext()->PostSubBufferCHROMIUM(x, y, width, height);
@@ -806,8 +799,8 @@
                                       GLsizei height,
                                       GLuint ioSurfaceId,
                                       GLuint plane) {
-  gles2::GetGLContext()->TexImageIOSurface2DCHROMIUM(
-      target, width, height, ioSurfaceId, plane);
+  gles2::GetGLContext()->TexImageIOSurface2DCHROMIUM(target, width, height,
+                                                     ioSurfaceId, plane);
 }
 void GLES2CopyTextureCHROMIUM(GLenum target,
                               GLenum source_id,
@@ -815,23 +808,23 @@
                               GLint level,
                               GLint internalformat,
                               GLenum dest_type) {
-  gles2::GetGLContext()->CopyTextureCHROMIUM(
-      target, source_id, dest_id, level, internalformat, dest_type);
+  gles2::GetGLContext()->CopyTextureCHROMIUM(target, source_id, dest_id, level,
+                                             internalformat, dest_type);
 }
 void GLES2DrawArraysInstancedANGLE(GLenum mode,
                                    GLint first,
                                    GLsizei count,
                                    GLsizei primcount) {
-  gles2::GetGLContext()->DrawArraysInstancedANGLE(
-      mode, first, count, primcount);
+  gles2::GetGLContext()->DrawArraysInstancedANGLE(mode, first, count,
+                                                  primcount);
 }
 void GLES2DrawElementsInstancedANGLE(GLenum mode,
                                      GLsizei count,
                                      GLenum type,
                                      const void* indices,
                                      GLsizei primcount) {
-  gles2::GetGLContext()->DrawElementsInstancedANGLE(
-      mode, count, type, indices, primcount);
+  gles2::GetGLContext()->DrawElementsInstancedANGLE(mode, count, type, indices,
+                                                    primcount);
 }
 void GLES2VertexAttribDivisorANGLE(GLuint index, GLuint divisor) {
   gles2::GetGLContext()->VertexAttribDivisorANGLE(index, divisor);
@@ -893,15 +886,9 @@
                                   GLenum format,
                                   GLenum type,
                                   const void* pixels) {
-  gles2::GetGLContext()->AsyncTexImage2DCHROMIUM(target,
-                                                 level,
-                                                 internalformat,
-                                                 width,
-                                                 height,
-                                                 border,
-                                                 format,
-                                                 type,
-                                                 pixels);
+  gles2::GetGLContext()->AsyncTexImage2DCHROMIUM(target, level, internalformat,
+                                                 width, height, border, format,
+                                                 type, pixels);
 }
 void GLES2WaitAsyncTexImage2DCHROMIUM(GLenum target) {
   gles2::GetGLContext()->WaitAsyncTexImage2DCHROMIUM(target);
@@ -940,17 +927,9 @@
                                        GLfloat uv_y,
                                        GLfloat uv_width,
                                        GLfloat uv_height) {
-  gles2::GetGLContext()->ScheduleOverlayPlaneCHROMIUM(plane_z_order,
-                                                      plane_transform,
-                                                      overlay_texture_id,
-                                                      bounds_x,
-                                                      bounds_y,
-                                                      bounds_width,
-                                                      bounds_height,
-                                                      uv_x,
-                                                      uv_y,
-                                                      uv_width,
-                                                      uv_height);
+  gles2::GetGLContext()->ScheduleOverlayPlaneCHROMIUM(
+      plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y,
+      bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height);
 }
 void GLES2MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) {
   gles2::GetGLContext()->MatrixLoadfCHROMIUM(matrixMode, m);
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index 24d8be2..9aeb449 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -205,14 +205,8 @@
   gles2::cmds::CompressedTexImage2D* c =
       GetCmdSpace<gles2::cmds::CompressedTexImage2D>();
   if (c) {
-    c->Init(target,
-            level,
-            internalformat,
-            width,
-            height,
-            imageSize,
-            data_shm_id,
-            data_shm_offset);
+    c->Init(target, level, internalformat, width, height, imageSize,
+            data_shm_id, data_shm_offset);
   }
 }
 
@@ -244,16 +238,8 @@
   gles2::cmds::CompressedTexSubImage2D* c =
       GetCmdSpace<gles2::cmds::CompressedTexSubImage2D>();
   if (c) {
-    c->Init(target,
-            level,
-            xoffset,
-            yoffset,
-            width,
-            height,
-            format,
-            imageSize,
-            data_shm_id,
-            data_shm_offset);
+    c->Init(target, level, xoffset, yoffset, width, height, format, imageSize,
+            data_shm_id, data_shm_offset);
   }
 }
 
@@ -892,17 +878,8 @@
                 GLboolean async) {
   gles2::cmds::ReadPixels* c = GetCmdSpace<gles2::cmds::ReadPixels>();
   if (c) {
-    c->Init(x,
-            y,
-            width,
-            height,
-            format,
-            type,
-            pixels_shm_id,
-            pixels_shm_offset,
-            result_shm_id,
-            result_shm_offset,
-            async);
+    c->Init(x, y, width, height, format, type, pixels_shm_id, pixels_shm_offset,
+            result_shm_id, result_shm_offset, async);
   }
 }
 
@@ -948,13 +925,8 @@
                   GLsizei length) {
   gles2::cmds::ShaderBinary* c = GetCmdSpace<gles2::cmds::ShaderBinary>();
   if (c) {
-    c->Init(n,
-            shaders_shm_id,
-            shaders_shm_offset,
-            binaryformat,
-            binary_shm_id,
-            binary_shm_offset,
-            length);
+    c->Init(n, shaders_shm_id, shaders_shm_offset, binaryformat, binary_shm_id,
+            binary_shm_offset, length);
   }
 }
 
@@ -1022,15 +994,8 @@
                 uint32_t pixels_shm_offset) {
   gles2::cmds::TexImage2D* c = GetCmdSpace<gles2::cmds::TexImage2D>();
   if (c) {
-    c->Init(target,
-            level,
-            internalformat,
-            width,
-            height,
-            format,
-            type,
-            pixels_shm_id,
-            pixels_shm_offset);
+    c->Init(target, level, internalformat, width, height, format, type,
+            pixels_shm_id, pixels_shm_offset);
   }
 }
 
@@ -1081,17 +1046,8 @@
                    GLboolean internal) {
   gles2::cmds::TexSubImage2D* c = GetCmdSpace<gles2::cmds::TexSubImage2D>();
   if (c) {
-    c->Init(target,
-            level,
-            xoffset,
-            yoffset,
-            width,
-            height,
-            format,
-            type,
-            pixels_shm_id,
-            pixels_shm_offset,
-            internal);
+    c->Init(target, level, xoffset, yoffset, width, height, format, type,
+            pixels_shm_id, pixels_shm_offset, internal);
   }
 }
 
@@ -1377,8 +1333,8 @@
   gles2::cmds::BlitFramebufferCHROMIUM* c =
       GetCmdSpace<gles2::cmds::BlitFramebufferCHROMIUM>();
   if (c) {
-    c->Init(
-        srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+    c->Init(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,
+            filter);
   }
 }
 
@@ -1591,12 +1547,8 @@
   gles2::cmds::GetMultipleIntegervCHROMIUM* c =
       GetCmdSpace<gles2::cmds::GetMultipleIntegervCHROMIUM>();
   if (c) {
-    c->Init(pnames_shm_id,
-            pnames_shm_offset,
-            count,
-            results_shm_id,
-            results_shm_offset,
-            size);
+    c->Init(pnames_shm_id, pnames_shm_offset, count, results_shm_id,
+            results_shm_offset, size);
   }
 }
 
@@ -1773,18 +1725,8 @@
   gles2::cmds::AsyncTexSubImage2DCHROMIUM* c =
       GetCmdSpace<gles2::cmds::AsyncTexSubImage2DCHROMIUM>();
   if (c) {
-    c->Init(target,
-            level,
-            xoffset,
-            yoffset,
-            width,
-            height,
-            format,
-            type,
-            data_shm_id,
-            data_shm_offset,
-            async_upload_token,
-            sync_data_shm_id,
+    c->Init(target, level, xoffset, yoffset, width, height, format, type,
+            data_shm_id, data_shm_offset, async_upload_token, sync_data_shm_id,
             sync_data_shm_offset);
   }
 }
@@ -1804,18 +1746,9 @@
   gles2::cmds::AsyncTexImage2DCHROMIUM* c =
       GetCmdSpace<gles2::cmds::AsyncTexImage2DCHROMIUM>();
   if (c) {
-    c->Init(target,
-            level,
-            internalformat,
-            width,
-            height,
-            format,
-            type,
-            pixels_shm_id,
-            pixels_shm_offset,
-            async_upload_token,
-            sync_data_shm_id,
-            sync_data_shm_offset);
+    c->Init(target, level, internalformat, width, height, format, type,
+            pixels_shm_id, pixels_shm_offset, async_upload_token,
+            sync_data_shm_id, sync_data_shm_offset);
   }
 }
 
@@ -1896,16 +1829,8 @@
   gles2::cmds::ScheduleOverlayPlaneCHROMIUM* c =
       GetCmdSpace<gles2::cmds::ScheduleOverlayPlaneCHROMIUM>();
   if (c) {
-    c->Init(plane_z_order,
-            plane_transform,
-            overlay_texture_id,
-            bounds_x,
-            bounds_y,
-            bounds_width,
-            bounds_height,
-            uv_x,
-            uv_y,
-            uv_width,
+    c->Init(plane_z_order, plane_transform, overlay_texture_id, bounds_x,
+            bounds_y, bounds_width, bounds_height, uv_x, uv_y, uv_width,
             uv_height);
   }
 }
diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
index 32b1347..e7cc074 100644
--- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
@@ -42,8 +42,8 @@
                      << GLES2Util::GetStringFrameBufferTarget(target) << ", "
                      << framebuffer << ")");
   if (IsFramebufferReservedId(framebuffer)) {
-    SetGLError(
-        GL_INVALID_OPERATION, "BindFramebuffer", "framebuffer reserved id");
+    SetGLError(GL_INVALID_OPERATION, "BindFramebuffer",
+               "framebuffer reserved id");
     return;
   }
   if (BindFramebufferHelper(target, framebuffer)) {
@@ -58,8 +58,8 @@
                      << GLES2Util::GetStringRenderBufferTarget(target) << ", "
                      << renderbuffer << ")");
   if (IsRenderbufferReservedId(renderbuffer)) {
-    SetGLError(
-        GL_INVALID_OPERATION, "BindRenderbuffer", "renderbuffer reserved id");
+    SetGLError(GL_INVALID_OPERATION, "BindRenderbuffer",
+               "renderbuffer reserved id");
     return;
   }
   if (BindRenderbufferHelper(target, renderbuffer)) {
@@ -146,8 +146,8 @@
     return GL_FRAMEBUFFER_UNSUPPORTED;
   }
   *result = 0;
-  helper_->CheckFramebufferStatus(
-      target, GetResultShmId(), GetResultShmOffset());
+  helper_->CheckFramebufferStatus(target, GetResultShmId(),
+                                  GetResultShmOffset());
   WaitForCmd();
   GLenum result_value = *result;
   GPU_CLIENT_LOG("returned " << result_value);
@@ -261,8 +261,8 @@
     SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0");
     return;
   }
-  helper_->CopyTexSubImage2D(
-      target, level, xoffset, yoffset, x, y, width, height);
+  helper_->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width,
+                             height);
   CheckGLError();
 }
 
@@ -449,8 +449,8 @@
                      << GLES2Util::GetStringAttachment(attachment) << ", "
                      << GLES2Util::GetStringRenderBufferTarget(
                             renderbuffertarget) << ", " << renderbuffer << ")");
-  helper_->FramebufferRenderbuffer(
-      target, attachment, renderbuffertarget, renderbuffer);
+  helper_->FramebufferRenderbuffer(target, attachment, renderbuffertarget,
+                                   renderbuffer);
   CheckGLError();
 }
 
@@ -466,8 +466,8 @@
                      << GLES2Util::GetStringTextureTarget(textarget) << ", "
                      << texture << ", " << level << ")");
   if (level != 0) {
-    SetGLError(
-        GL_INVALID_VALUE, "glFramebufferTexture2D", "level GL_INVALID_VALUE");
+    SetGLError(GL_INVALID_VALUE, "glFramebufferTexture2D",
+               "level GL_INVALID_VALUE");
     return;
   }
   helper_->FramebufferTexture2D(target, attachment, textarget, texture);
@@ -620,8 +620,8 @@
     return;
   }
   result->SetNumResults(0);
-  helper_->GetBufferParameteriv(
-      target, pname, GetResultShmId(), GetResultShmOffset());
+  helper_->GetBufferParameteriv(target, pname, GetResultShmId(),
+                                GetResultShmOffset());
   WaitForCmd();
   result->CopyResult(params);
   GPU_CLIENT_LOG_CODE_BLOCK({
@@ -670,8 +670,8 @@
                      << static_cast<const void*>(params) << ")");
   TRACE_EVENT0("gpu",
                "GLES2Implementation::GetFramebufferAttachmentParameteriv");
-  if (GetFramebufferAttachmentParameterivHelper(
-          target, attachment, pname, params)) {
+  if (GetFramebufferAttachmentParameterivHelper(target, attachment, pname,
+                                                params)) {
     return;
   }
   typedef cmds::GetFramebufferAttachmentParameteriv::Result Result;
@@ -791,8 +791,8 @@
     return;
   }
   result->SetNumResults(0);
-  helper_->GetRenderbufferParameteriv(
-      target, pname, GetResultShmId(), GetResultShmOffset());
+  helper_->GetRenderbufferParameteriv(target, pname, GetResultShmId(),
+                                      GetResultShmOffset());
   WaitForCmd();
   result->CopyResult(params);
   GPU_CLIENT_LOG_CODE_BLOCK({
@@ -902,8 +902,8 @@
     return;
   }
   result->SetNumResults(0);
-  helper_->GetTexParameterfv(
-      target, pname, GetResultShmId(), GetResultShmOffset());
+  helper_->GetTexParameterfv(target, pname, GetResultShmId(),
+                             GetResultShmOffset());
   WaitForCmd();
   result->CopyResult(params);
   GPU_CLIENT_LOG_CODE_BLOCK({
@@ -932,8 +932,8 @@
     return;
   }
   result->SetNumResults(0);
-  helper_->GetTexParameteriv(
-      target, pname, GetResultShmId(), GetResultShmOffset());
+  helper_->GetTexParameteriv(target, pname, GetResultShmId(),
+                             GetResultShmOffset());
   WaitForCmd();
   result->CopyResult(params);
   GPU_CLIENT_LOG_CODE_BLOCK({
@@ -1497,8 +1497,8 @@
     return;
   }
   if (transpose != false) {
-    SetGLError(
-        GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE");
+    SetGLError(GL_INVALID_VALUE, "glUniformMatrix2fv",
+               "transpose GL_INVALID_VALUE");
     return;
   }
   helper_->UniformMatrix2fvImmediate(location, count, value);
@@ -1529,8 +1529,8 @@
     return;
   }
   if (transpose != false) {
-    SetGLError(
-        GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE");
+    SetGLError(GL_INVALID_VALUE, "glUniformMatrix3fv",
+               "transpose GL_INVALID_VALUE");
     return;
   }
   helper_->UniformMatrix3fvImmediate(location, count, value);
@@ -1564,8 +1564,8 @@
     return;
   }
   if (transpose != false) {
-    SetGLError(
-        GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE");
+    SetGLError(GL_INVALID_VALUE, "glUniformMatrix4fv",
+               "transpose GL_INVALID_VALUE");
     return;
   }
   helper_->UniformMatrix4fvImmediate(location, count, value);
@@ -1705,8 +1705,8 @@
                      << ", " << dstX0 << ", " << dstY0 << ", " << dstX1 << ", "
                      << dstY1 << ", " << mask << ", "
                      << GLES2Util::GetStringBlitFilter(filter) << ")");
-  helper_->BlitFramebufferCHROMIUM(
-      srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+  helper_->BlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0,
+                                   dstX1, dstY1, mask, filter);
   CheckGLError();
 }
 
@@ -1723,20 +1723,17 @@
           << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat)
           << ", " << width << ", " << height << ")");
   if (samples < 0) {
-    SetGLError(GL_INVALID_VALUE,
-               "glRenderbufferStorageMultisampleCHROMIUM",
+    SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleCHROMIUM",
                "samples < 0");
     return;
   }
   if (width < 0) {
-    SetGLError(GL_INVALID_VALUE,
-               "glRenderbufferStorageMultisampleCHROMIUM",
+    SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleCHROMIUM",
                "width < 0");
     return;
   }
   if (height < 0) {
-    SetGLError(GL_INVALID_VALUE,
-               "glRenderbufferStorageMultisampleCHROMIUM",
+    SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleCHROMIUM",
                "height < 0");
     return;
   }
@@ -1758,22 +1755,22 @@
           << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat)
           << ", " << width << ", " << height << ")");
   if (samples < 0) {
-    SetGLError(
-        GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0");
+    SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT",
+               "samples < 0");
     return;
   }
   if (width < 0) {
-    SetGLError(
-        GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0");
+    SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT",
+               "width < 0");
     return;
   }
   if (height < 0) {
-    SetGLError(
-        GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0");
+    SetGLError(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT",
+               "height < 0");
     return;
   }
-  helper_->RenderbufferStorageMultisampleEXT(
-      target, samples, internalformat, width, height);
+  helper_->RenderbufferStorageMultisampleEXT(target, samples, internalformat,
+                                             width, height);
   CheckGLError();
 }
 
@@ -1791,19 +1788,17 @@
                      << GLES2Util::GetStringTextureTarget(textarget) << ", "
                      << texture << ", " << level << ", " << samples << ")");
   if (level != 0) {
-    SetGLError(GL_INVALID_VALUE,
-               "glFramebufferTexture2DMultisampleEXT",
+    SetGLError(GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT",
                "level GL_INVALID_VALUE");
     return;
   }
   if (samples < 0) {
-    SetGLError(GL_INVALID_VALUE,
-               "glFramebufferTexture2DMultisampleEXT",
+    SetGLError(GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT",
                "samples < 0");
     return;
   }
-  helper_->FramebufferTexture2DMultisampleEXT(
-      target, attachment, textarget, texture, samples);
+  helper_->FramebufferTexture2DMultisampleEXT(target, attachment, textarget,
+                                              texture, samples);
   CheckGLError();
 }
 
@@ -2001,8 +1996,8 @@
     SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0");
     return;
   }
-  helper_->TexImageIOSurface2DCHROMIUM(
-      target, width, height, ioSurfaceId, plane);
+  helper_->TexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId,
+                                       plane);
   CheckGLError();
 }
 
@@ -2019,8 +2014,8 @@
                      << GLES2Util::GetStringEnum(dest_id) << ", " << level
                      << ", " << internalformat << ", "
                      << GLES2Util::GetStringPixelType(dest_type) << ")");
-  helper_->CopyTextureCHROMIUM(
-      target, source_id, dest_id, level, internalformat, dest_type);
+  helper_->CopyTextureCHROMIUM(target, source_id, dest_id, level,
+                               internalformat, dest_type);
   CheckGLError();
 }
 
@@ -2124,17 +2119,9 @@
           << ", " << overlay_texture_id << ", " << bounds_x << ", " << bounds_y
           << ", " << bounds_width << ", " << bounds_height << ", " << uv_x
           << ", " << uv_y << ", " << uv_width << ", " << uv_height << ")");
-  helper_->ScheduleOverlayPlaneCHROMIUM(plane_z_order,
-                                        plane_transform,
-                                        overlay_texture_id,
-                                        bounds_x,
-                                        bounds_y,
-                                        bounds_width,
-                                        bounds_height,
-                                        uv_x,
-                                        uv_y,
-                                        uv_width,
-                                        uv_height);
+  helper_->ScheduleOverlayPlaneCHROMIUM(
+      plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y,
+      bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height);
   CheckGLError();
 }
 
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc
index 3d2f089..be1f1a3 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest.cc
+++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc
@@ -467,7 +467,7 @@
 
       scoped_refptr<Buffer> ring_buffer = helper_->get_ring_buffer();
       commands_ = static_cast<CommandBufferEntry*>(ring_buffer->memory()) +
-                  command_buffer()->GetLastState().put_offset;
+                  command_buffer()->GetPutOffset();
       ClearCommands();
       EXPECT_TRUE(transfer_buffer_->InSync());
 
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index a42d6d5..8069b12 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -421,8 +421,8 @@
   Cmds expected;
   expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 4);
 
-  gl_->FramebufferRenderbuffer(
-      GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 4);
+  gl_->FramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                               GL_RENDERBUFFER, 4);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -433,14 +433,14 @@
   Cmds expected;
   expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4);
 
-  gl_->FramebufferTexture2D(
-      GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 0);
+  gl_->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+                            4, 0);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
 TEST_F(GLES2ImplementationTest, FramebufferTexture2DInvalidConstantArg4) {
-  gl_->FramebufferTexture2D(
-      GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 1);
+  gl_->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+                            4, 1);
   EXPECT_TRUE(NoCommandsWritten());
   EXPECT_EQ(GL_INVALID_VALUE, CheckError());
 }
@@ -602,18 +602,14 @@
   Result::Type result = 0;
   Cmds expected;
   ExpectedMemoryInfo result1 = GetExpectedResultMemory(4);
-  expected.cmd.Init(123,
-                    GL_COLOR_ATTACHMENT0,
-                    GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-                    result1.id,
+  expected.cmd.Init(123, GL_COLOR_ATTACHMENT0,
+                    GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, result1.id,
                     result1.offset);
   EXPECT_CALL(*command_buffer(), OnFlush())
       .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1)))
       .RetiresOnSaturation();
   gl_->GetFramebufferAttachmentParameteriv(
-      123,
-      GL_COLOR_ATTACHMENT0,
-      GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
+      123, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
       &result);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
   EXPECT_EQ(static_cast<Result::Type>(1), result);
@@ -735,8 +731,8 @@
   Result::Type result = 0;
   Cmds expected;
   ExpectedMemoryInfo result1 = GetExpectedResultMemory(4);
-  expected.cmd.Init(
-      123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, result1.offset);
+  expected.cmd.Init(123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id,
+                    result1.offset);
   EXPECT_CALL(*command_buffer(), OnFlush())
       .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1)))
       .RetiresOnSaturation();
@@ -753,8 +749,8 @@
   Result::Type result = 0;
   Cmds expected;
   ExpectedMemoryInfo result1 = GetExpectedResultMemory(4);
-  expected.cmd.Init(
-      123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, result1.offset);
+  expected.cmd.Init(123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id,
+                    result1.offset);
   EXPECT_CALL(*command_buffer(), OnFlush())
       .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1)))
       .RetiresOnSaturation();
@@ -1599,8 +1595,8 @@
   Cmds expected;
   expected.cmd.Init(GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5);
 
-  gl_->RenderbufferStorageMultisampleCHROMIUM(
-      GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5);
+  gl_->RenderbufferStorageMultisampleCHROMIUM(GL_RENDERBUFFER, 2, GL_RGBA4, 4,
+                                              5);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
@@ -1622,15 +1618,15 @@
   Cmds expected;
   expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 6);
 
-  gl_->FramebufferTexture2DMultisampleEXT(
-      GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 0, 6);
+  gl_->FramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                          GL_TEXTURE_2D, 4, 0, 6);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
 
 TEST_F(GLES2ImplementationTest,
        FramebufferTexture2DMultisampleEXTInvalidConstantArg4) {
-  gl_->FramebufferTexture2DMultisampleEXT(
-      GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 1, 6);
+  gl_->FramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                          GL_TEXTURE_2D, 4, 1, 6);
   EXPECT_TRUE(NoCommandsWritten());
   EXPECT_EQ(GL_INVALID_VALUE, CheckError());
 }
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
index 3173a25..cf614a9 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
@@ -149,8 +149,8 @@
                                                     GLsizei imageSize,
                                                     const void* data) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CompressedTexImage2D");
-  gl_->CompressedTexImage2D(
-      target, level, internalformat, width, height, border, imageSize, data);
+  gl_->CompressedTexImage2D(target, level, internalformat, width, height,
+                            border, imageSize, data);
 }
 
 void GLES2TraceImplementation::CompressedTexSubImage2D(GLenum target,
@@ -163,8 +163,8 @@
                                                        GLsizei imageSize,
                                                        const void* data) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CompressedTexSubImage2D");
-  gl_->CompressedTexSubImage2D(
-      target, level, xoffset, yoffset, width, height, format, imageSize, data);
+  gl_->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height,
+                               format, imageSize, data);
 }
 
 void GLES2TraceImplementation::CopyTexImage2D(GLenum target,
@@ -176,8 +176,8 @@
                                               GLsizei height,
                                               GLint border) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CopyTexImage2D");
-  gl_->CopyTexImage2D(
-      target, level, internalformat, x, y, width, height, border);
+  gl_->CopyTexImage2D(target, level, internalformat, x, y, width, height,
+                      border);
 }
 
 void GLES2TraceImplementation::CopyTexSubImage2D(GLenum target,
@@ -312,8 +312,8 @@
     GLenum renderbuffertarget,
     GLuint renderbuffer) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::FramebufferRenderbuffer");
-  gl_->FramebufferRenderbuffer(
-      target, attachment, renderbuffertarget, renderbuffer);
+  gl_->FramebufferRenderbuffer(target, attachment, renderbuffertarget,
+                               renderbuffer);
 }
 
 void GLES2TraceImplementation::FramebufferTexture2D(GLenum target,
@@ -719,15 +719,8 @@
                                           GLenum type,
                                           const void* pixels) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::TexImage2D");
-  gl_->TexImage2D(target,
-                  level,
-                  internalformat,
-                  width,
-                  height,
-                  border,
-                  format,
-                  type,
-                  pixels);
+  gl_->TexImage2D(target, level, internalformat, width, height, border, format,
+                  type, pixels);
 }
 
 void GLES2TraceImplementation::TexParameterf(GLenum target,
@@ -768,8 +761,8 @@
                                              GLenum type,
                                              const void* pixels) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::TexSubImage2D");
-  gl_->TexSubImage2D(
-      target, level, xoffset, yoffset, width, height, format, type, pixels);
+  gl_->TexSubImage2D(target, level, xoffset, yoffset, width, height, format,
+                     type, pixels);
 }
 
 void GLES2TraceImplementation::Uniform1f(GLint location, GLfloat x) {
@@ -998,8 +991,8 @@
                                                        GLbitfield mask,
                                                        GLenum filter) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BlitFramebufferCHROMIUM");
-  gl_->BlitFramebufferCHROMIUM(
-      srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+  gl_->BlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1,
+                               dstY1, mask, filter);
 }
 
 void GLES2TraceImplementation::RenderbufferStorageMultisampleCHROMIUM(
@@ -1010,8 +1003,8 @@
     GLsizei height) {
   TRACE_EVENT_BINARY_EFFICIENT0(
       "gpu", "GLES2Trace::RenderbufferStorageMultisampleCHROMIUM");
-  gl_->RenderbufferStorageMultisampleCHROMIUM(
-      target, samples, internalformat, width, height);
+  gl_->RenderbufferStorageMultisampleCHROMIUM(target, samples, internalformat,
+                                              width, height);
 }
 
 void GLES2TraceImplementation::RenderbufferStorageMultisampleEXT(
@@ -1022,8 +1015,8 @@
     GLsizei height) {
   TRACE_EVENT_BINARY_EFFICIENT0(
       "gpu", "GLES2Trace::RenderbufferStorageMultisampleEXT");
-  gl_->RenderbufferStorageMultisampleEXT(
-      target, samples, internalformat, width, height);
+  gl_->RenderbufferStorageMultisampleEXT(target, samples, internalformat, width,
+                                         height);
 }
 
 void GLES2TraceImplementation::FramebufferTexture2DMultisampleEXT(
@@ -1035,8 +1028,8 @@
     GLsizei samples) {
   TRACE_EVENT_BINARY_EFFICIENT0(
       "gpu", "GLES2Trace::FramebufferTexture2DMultisampleEXT");
-  gl_->FramebufferTexture2DMultisampleEXT(
-      target, attachment, textarget, texture, level, samples);
+  gl_->FramebufferTexture2DMultisampleEXT(target, attachment, textarget,
+                                          texture, level, samples);
 }
 
 void GLES2TraceImplementation::TexStorage2DEXT(GLenum target,
@@ -1180,8 +1173,8 @@
                                                          GLenum type,
                                                          GLenum access) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::MapTexSubImage2DCHROMIUM");
-  return gl_->MapTexSubImage2DCHROMIUM(
-      target, level, xoffset, yoffset, width, height, format, type, access);
+  return gl_->MapTexSubImage2DCHROMIUM(target, level, xoffset, yoffset, width,
+                                       height, format, type, access);
 }
 
 void GLES2TraceImplementation::UnmapTexSubImage2DCHROMIUM(const void* mem) {
@@ -1257,8 +1250,8 @@
     GLenum usage) {
   TRACE_EVENT_BINARY_EFFICIENT0(
       "gpu", "GLES2Trace::CreateGpuMemoryBufferImageCHROMIUM");
-  return gl_->CreateGpuMemoryBufferImageCHROMIUM(
-      width, height, internalformat, usage);
+  return gl_->CreateGpuMemoryBufferImageCHROMIUM(width, height, internalformat,
+                                                 usage);
 }
 
 void GLES2TraceImplementation::GetTranslatedShaderSourceANGLE(GLuint shader,
@@ -1295,8 +1288,8 @@
                                                    GLint internalformat,
                                                    GLenum dest_type) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::CopyTextureCHROMIUM");
-  gl_->CopyTextureCHROMIUM(
-      target, source_id, dest_id, level, internalformat, dest_type);
+  gl_->CopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat,
+                           dest_type);
 }
 
 void GLES2TraceImplementation::DrawArraysInstancedANGLE(GLenum mode,
@@ -1398,8 +1391,8 @@
                                                           const void* data) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu",
                                 "GLES2Trace::AsyncTexSubImage2DCHROMIUM");
-  gl_->AsyncTexSubImage2DCHROMIUM(
-      target, level, xoffset, yoffset, width, height, format, type, data);
+  gl_->AsyncTexSubImage2DCHROMIUM(target, level, xoffset, yoffset, width,
+                                  height, format, type, data);
 }
 
 void GLES2TraceImplementation::AsyncTexImage2DCHROMIUM(GLenum target,
@@ -1412,15 +1405,8 @@
                                                        GLenum type,
                                                        const void* pixels) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::AsyncTexImage2DCHROMIUM");
-  gl_->AsyncTexImage2DCHROMIUM(target,
-                               level,
-                               internalformat,
-                               width,
-                               height,
-                               border,
-                               format,
-                               type,
-                               pixels);
+  gl_->AsyncTexImage2DCHROMIUM(target, level, internalformat, width, height,
+                               border, format, type, pixels);
 }
 
 void GLES2TraceImplementation::WaitAsyncTexImage2DCHROMIUM(GLenum target) {
@@ -1484,17 +1470,9 @@
     GLfloat uv_height) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu",
                                 "GLES2Trace::ScheduleOverlayPlaneCHROMIUM");
-  gl_->ScheduleOverlayPlaneCHROMIUM(plane_z_order,
-                                    plane_transform,
-                                    overlay_texture_id,
-                                    bounds_x,
-                                    bounds_y,
-                                    bounds_width,
-                                    bounds_height,
-                                    uv_x,
-                                    uv_y,
-                                    uv_width,
-                                    uv_height);
+  gl_->ScheduleOverlayPlaneCHROMIUM(
+      plane_z_order, plane_transform, overlay_texture_id, bounds_x, bounds_y,
+      bounds_width, bounds_height, uv_x, uv_y, uv_width, uv_height);
 }
 
 void GLES2TraceImplementation::MatrixLoadfCHROMIUM(GLenum matrixMode,
diff --git a/gpu/command_buffer/common/command_buffer.h b/gpu/command_buffer/common/command_buffer.h
index 61b9142..d846ec1 100644
--- a/gpu/command_buffer/common/command_buffer.h
+++ b/gpu/command_buffer/common/command_buffer.h
@@ -20,24 +20,16 @@
  public:
   struct State {
     State()
-        : num_entries(0),
-          get_offset(0),
-          put_offset(0),
+        : get_offset(0),
           token(-1),
           error(error::kNoError),
           context_lost_reason(error::kUnknown),
           generation(0) {
     }
 
-    // Size of the command buffer in command buffer entries.
-    int32 num_entries;
-
     // The offset (in entries) from which the reader is reading.
     int32 get_offset;
 
-    // The offset (in entries) at which the writer is writing.
-    int32 put_offset;
-
     // The current token value. This is used by the writer to defer
     // changes to shared memory objects until the reader has reached a certain
     // point in the command buffer. The reader is responsible for updating the
diff --git a/gpu/command_buffer/common/command_buffer_mock.h b/gpu/command_buffer/common/command_buffer_mock.h
index 1877470..b7366f8 100644
--- a/gpu/command_buffer/common/command_buffer_mock.h
+++ b/gpu/command_buffer/common/command_buffer_mock.h
@@ -38,6 +38,7 @@
   MOCK_METHOD1(SetContextLostReason,
                void(error::ContextLostReason context_lost_reason));
   MOCK_METHOD0(InsertSyncPoint, uint32());
+  MOCK_METHOD0(GetPutOffset, int32());
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockCommandBuffer);
diff --git a/gpu/command_buffer/common/command_buffer_shared_test.cc b/gpu/command_buffer/common/command_buffer_shared_test.cc
index 65a2429..0615f74 100644
--- a/gpu/command_buffer/common/command_buffer_shared_test.cc
+++ b/gpu/command_buffer/common/command_buffer_shared_test.cc
@@ -29,7 +29,6 @@
 
   EXPECT_LT(state.generation, 0x80000000);
   EXPECT_EQ(state.get_offset, 0);
-  EXPECT_EQ(state.put_offset, 0);
   EXPECT_EQ(state.token, -1);
   EXPECT_EQ(state.error, gpu::error::kNoError);
   EXPECT_EQ(state.context_lost_reason, gpu::error::kUnknown);
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index 487e8b7..ecef6bb 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -962,13 +962,8 @@
             GLsizei _imageSize,
             uint32_t _data_shm_id,
             uint32_t _data_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _internalformat,
-                                       _width,
-                                       _height,
-                                       _imageSize,
-                                       _data_shm_id,
+    static_cast<ValueType*>(cmd)->Init(_target, _level, _internalformat, _width,
+                                       _height, _imageSize, _data_shm_id,
                                        _data_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
@@ -1046,14 +1041,8 @@
             GLsizei _height,
             GLenum _format,
             GLuint _bucket_id) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _xoffset,
-                                       _yoffset,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _bucket_id);
+    static_cast<ValueType*>(cmd)->Init(_target, _level, _xoffset, _yoffset,
+                                       _width, _height, _format, _bucket_id);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -1135,16 +1124,9 @@
             GLsizei _imageSize,
             uint32_t _data_shm_id,
             uint32_t _data_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _xoffset,
-                                       _yoffset,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _imageSize,
-                                       _data_shm_id,
-                                       _data_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_target, _level, _xoffset, _yoffset,
+                                       _width, _height, _format, _imageSize,
+                                       _data_shm_id, _data_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -2436,8 +2418,8 @@
             uint32_t _name_bucket_id,
             uint32_t _result_shm_id,
             uint32_t _result_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(
-        _program, _index, _name_bucket_id, _result_shm_id, _result_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_program, _index, _name_bucket_id,
+                                       _result_shm_id, _result_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -2506,8 +2488,8 @@
             uint32_t _name_bucket_id,
             uint32_t _result_shm_id,
             uint32_t _result_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(
-        _program, _index, _name_bucket_id, _result_shm_id, _result_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_program, _index, _name_bucket_id,
+                                       _result_shm_id, _result_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -2625,8 +2607,8 @@
             uint32_t _name_bucket_id,
             uint32_t _location_shm_id,
             uint32_t _location_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(
-        _program, _name_bucket_id, _location_shm_id, _location_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_program, _name_bucket_id,
+                                       _location_shm_id, _location_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -2870,8 +2852,8 @@
             GLenum _pname,
             uint32_t _params_shm_id,
             uint32_t _params_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(
-        _target, _attachment, _pname, _params_shm_id, _params_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_target, _attachment, _pname,
+                                       _params_shm_id, _params_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -3572,8 +3554,8 @@
             uint32_t _name_bucket_id,
             uint32_t _location_shm_id,
             uint32_t _location_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(
-        _program, _name_bucket_id, _location_shm_id, _location_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_program, _name_bucket_id,
+                                       _location_shm_id, _location_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -4313,17 +4295,9 @@
             uint32_t _result_shm_id,
             uint32_t _result_shm_offset,
             GLboolean _async) {
-    static_cast<ValueType*>(cmd)->Init(_x,
-                                       _y,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _type,
-                                       _pixels_shm_id,
-                                       _pixels_shm_offset,
-                                       _result_shm_id,
-                                       _result_shm_offset,
-                                       _async);
+    static_cast<ValueType*>(cmd)
+        ->Init(_x, _y, _width, _height, _format, _type, _pixels_shm_id,
+               _pixels_shm_offset, _result_shm_id, _result_shm_offset, _async);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -4557,13 +4531,9 @@
             uint32_t _binary_shm_id,
             uint32_t _binary_shm_offset,
             GLsizei _length) {
-    static_cast<ValueType*>(cmd)->Init(_n,
-                                       _shaders_shm_id,
-                                       _shaders_shm_offset,
-                                       _binaryformat,
-                                       _binary_shm_id,
-                                       _binary_shm_offset,
-                                       _length);
+    static_cast<ValueType*>(cmd)->Init(_n, _shaders_shm_id, _shaders_shm_offset,
+                                       _binaryformat, _binary_shm_id,
+                                       _binary_shm_offset, _length);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -4914,14 +4884,8 @@
             GLenum _type,
             uint32_t _pixels_shm_id,
             uint32_t _pixels_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _internalformat,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _type,
-                                       _pixels_shm_id,
+    static_cast<ValueType*>(cmd)->Init(_target, _level, _internalformat, _width,
+                                       _height, _format, _type, _pixels_shm_id,
                                        _pixels_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
@@ -5178,17 +5142,9 @@
             uint32_t _pixels_shm_id,
             uint32_t _pixels_shm_offset,
             GLboolean _internal) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _xoffset,
-                                       _yoffset,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _type,
-                                       _pixels_shm_id,
-                                       _pixels_shm_offset,
-                                       _internal);
+    static_cast<ValueType*>(cmd)
+        ->Init(_target, _level, _xoffset, _yoffset, _width, _height, _format,
+               _type, _pixels_shm_id, _pixels_shm_offset, _internal);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -6615,16 +6571,8 @@
             GLint _dstY1,
             GLbitfield _mask,
             GLenum _filter) {
-    static_cast<ValueType*>(cmd)->Init(_srcX0,
-                                       _srcY0,
-                                       _srcX1,
-                                       _srcY1,
-                                       _dstX0,
-                                       _dstY0,
-                                       _dstX1,
-                                       _dstY1,
-                                       _mask,
-                                       _filter);
+    static_cast<ValueType*>(cmd)->Init(_srcX0, _srcY0, _srcX1, _srcY1, _dstX0,
+                                       _dstY0, _dstX1, _dstY1, _mask, _filter);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -7399,8 +7347,8 @@
             GLuint _offset,
             uint32_t _result_shm_id,
             uint32_t _result_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(
-        _buffer_id, _count, _type, _offset, _result_shm_id, _result_shm_offset);
+    static_cast<ValueType*>(cmd)->Init(_buffer_id, _count, _type, _offset,
+                                       _result_shm_id, _result_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -7619,12 +7567,9 @@
             uint32_t _results_shm_id,
             uint32_t _results_shm_offset,
             GLsizeiptr _size) {
-    static_cast<ValueType*>(cmd)->Init(_pnames_shm_id,
-                                       _pnames_shm_offset,
-                                       _count,
-                                       _results_shm_id,
-                                       _results_shm_offset,
-                                       _size);
+    static_cast<ValueType*>(cmd)->Init(_pnames_shm_id, _pnames_shm_offset,
+                                       _count, _results_shm_id,
+                                       _results_shm_offset, _size);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -7878,8 +7823,8 @@
             GLint _level,
             GLint _internalformat,
             GLenum _dest_type) {
-    static_cast<ValueType*>(cmd)->Init(
-        _target, _source_id, _dest_id, _level, _internalformat, _dest_type);
+    static_cast<ValueType*>(cmd)->Init(_target, _source_id, _dest_id, _level,
+                                       _internalformat, _dest_type);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -8414,19 +8359,10 @@
             uint32_t _async_upload_token,
             uint32_t _sync_data_shm_id,
             uint32_t _sync_data_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _xoffset,
-                                       _yoffset,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _type,
-                                       _data_shm_id,
-                                       _data_shm_offset,
-                                       _async_upload_token,
-                                       _sync_data_shm_id,
-                                       _sync_data_shm_offset);
+    static_cast<ValueType*>(cmd)
+        ->Init(_target, _level, _xoffset, _yoffset, _width, _height, _format,
+               _type, _data_shm_id, _data_shm_offset, _async_upload_token,
+               _sync_data_shm_id, _sync_data_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -8529,18 +8465,10 @@
             uint32_t _async_upload_token,
             uint32_t _sync_data_shm_id,
             uint32_t _sync_data_shm_offset) {
-    static_cast<ValueType*>(cmd)->Init(_target,
-                                       _level,
-                                       _internalformat,
-                                       _width,
-                                       _height,
-                                       _format,
-                                       _type,
-                                       _pixels_shm_id,
-                                       _pixels_shm_offset,
-                                       _async_upload_token,
-                                       _sync_data_shm_id,
-                                       _sync_data_shm_offset);
+    static_cast<ValueType*>(cmd)
+        ->Init(_target, _level, _internalformat, _width, _height, _format,
+               _type, _pixels_shm_id, _pixels_shm_offset, _async_upload_token,
+               _sync_data_shm_id, _sync_data_shm_offset);
     return NextCmdAddress<ValueType>(cmd);
   }
 
@@ -8886,17 +8814,10 @@
             GLfloat _uv_y,
             GLfloat _uv_width,
             GLfloat _uv_height) {
-    static_cast<ValueType*>(cmd)->Init(_plane_z_order,
-                                       _plane_transform,
-                                       _overlay_texture_id,
-                                       _bounds_x,
-                                       _bounds_y,
-                                       _bounds_width,
-                                       _bounds_height,
-                                       _uv_x,
-                                       _uv_y,
-                                       _uv_width,
-                                       _uv_height);
+    static_cast<ValueType*>(cmd)->Init(_plane_z_order, _plane_transform,
+                                       _overlay_texture_id, _bounds_x,
+                                       _bounds_y, _bounds_width, _bounds_height,
+                                       _uv_x, _uv_y, _uv_width, _uv_height);
     return NextCmdAddress<ValueType>(cmd);
   }
 
diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
index b26afb1..7d037a6 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -39,10 +39,8 @@
 TEST_F(GLES2FormatTest, BindAttribLocationBucket) {
   cmds::BindAttribLocationBucket& cmd =
       *GetBufferAs<cmds::BindAttribLocationBucket>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLuint>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+                           static_cast<GLuint>(12), static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BindAttribLocationBucket::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -102,11 +100,9 @@
 
 TEST_F(GLES2FormatTest, BlendColor) {
   cmds::BlendColor& cmd = *GetBufferAs<cmds::BlendColor>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLclampf>(11),
-                           static_cast<GLclampf>(12),
-                           static_cast<GLclampf>(13),
-                           static_cast<GLclampf>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLclampf>(11), static_cast<GLclampf>(12),
+              static_cast<GLclampf>(13), static_cast<GLclampf>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendColor::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -153,11 +149,9 @@
 
 TEST_F(GLES2FormatTest, BlendFuncSeparate) {
   cmds::BlendFuncSeparate& cmd = *GetBufferAs<cmds::BlendFuncSeparate>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLenum>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLenum>(13), static_cast<GLenum>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BlendFuncSeparate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -170,12 +164,10 @@
 
 TEST_F(GLES2FormatTest, BufferData) {
   cmds::BufferData& cmd = *GetBufferAs<cmds::BufferData>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizeiptr>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14),
-                           static_cast<GLenum>(15));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLsizeiptr>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14),
+              static_cast<GLenum>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BufferData::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -189,12 +181,10 @@
 
 TEST_F(GLES2FormatTest, BufferSubData) {
   cmds::BufferSubData& cmd = *GetBufferAs<cmds::BufferSubData>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLintptr>(12),
-                           static_cast<GLsizeiptr>(13),
-                           static_cast<uint32_t>(14),
-                           static_cast<uint32_t>(15));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLintptr>(12),
+              static_cast<GLsizeiptr>(13), static_cast<uint32_t>(14),
+              static_cast<uint32_t>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BufferSubData::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -209,10 +199,9 @@
 TEST_F(GLES2FormatTest, CheckFramebufferStatus) {
   cmds::CheckFramebufferStatus& cmd =
       *GetBufferAs<cmds::CheckFramebufferStatus>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CheckFramebufferStatus::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -233,11 +222,9 @@
 
 TEST_F(GLES2FormatTest, ClearColor) {
   cmds::ClearColor& cmd = *GetBufferAs<cmds::ClearColor>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLclampf>(11),
-                           static_cast<GLclampf>(12),
-                           static_cast<GLclampf>(13),
-                           static_cast<GLclampf>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLclampf>(11), static_cast<GLclampf>(12),
+              static_cast<GLclampf>(13), static_cast<GLclampf>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::ClearColor::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -270,11 +257,9 @@
 
 TEST_F(GLES2FormatTest, ColorMask) {
   cmds::ColorMask& cmd = *GetBufferAs<cmds::ColorMask>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLboolean>(11),
-                           static_cast<GLboolean>(12),
-                           static_cast<GLboolean>(13),
-                           static_cast<GLboolean>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLboolean>(11), static_cast<GLboolean>(12),
+              static_cast<GLboolean>(13), static_cast<GLboolean>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::ColorMask::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLboolean>(11), cmd.red);
@@ -297,13 +282,10 @@
 TEST_F(GLES2FormatTest, CompressedTexImage2DBucket) {
   cmds::CompressedTexImage2DBucket& cmd =
       *GetBufferAs<cmds::CompressedTexImage2DBucket>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLuint>(16));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLenum>(13), static_cast<GLsizei>(14),
+              static_cast<GLsizei>(15), static_cast<GLuint>(16));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexImage2DBucket::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -318,15 +300,11 @@
 
 TEST_F(GLES2FormatTest, CompressedTexImage2D) {
   cmds::CompressedTexImage2D& cmd = *GetBufferAs<cmds::CompressedTexImage2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLsizei>(16),
-                           static_cast<uint32_t>(17),
-                           static_cast<uint32_t>(18));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLenum>(13), static_cast<GLsizei>(14),
+              static_cast<GLsizei>(15), static_cast<GLsizei>(16),
+              static_cast<uint32_t>(17), static_cast<uint32_t>(18));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexImage2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -344,15 +322,11 @@
 TEST_F(GLES2FormatTest, CompressedTexSubImage2DBucket) {
   cmds::CompressedTexSubImage2DBucket& cmd =
       *GetBufferAs<cmds::CompressedTexSubImage2DBucket>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLsizei>(16),
-                           static_cast<GLenum>(17),
-                           static_cast<GLuint>(18));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLint>(13), static_cast<GLint>(14),
+              static_cast<GLsizei>(15), static_cast<GLsizei>(16),
+              static_cast<GLenum>(17), static_cast<GLuint>(18));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexSubImage2DBucket::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -370,17 +344,12 @@
 TEST_F(GLES2FormatTest, CompressedTexSubImage2D) {
   cmds::CompressedTexSubImage2D& cmd =
       *GetBufferAs<cmds::CompressedTexSubImage2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLsizei>(16),
-                           static_cast<GLenum>(17),
-                           static_cast<GLsizei>(18),
-                           static_cast<uint32_t>(19),
-                           static_cast<uint32_t>(20));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLint>(13), static_cast<GLint>(14),
+              static_cast<GLsizei>(15), static_cast<GLsizei>(16),
+              static_cast<GLenum>(17), static_cast<GLsizei>(18),
+              static_cast<uint32_t>(19), static_cast<uint32_t>(20));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CompressedTexSubImage2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -399,14 +368,10 @@
 
 TEST_F(GLES2FormatTest, CopyTexImage2D) {
   cmds::CopyTexImage2D& cmd = *GetBufferAs<cmds::CopyTexImage2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLint>(15),
-                           static_cast<GLsizei>(16),
-                           static_cast<GLsizei>(17));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLint>(12), static_cast<GLenum>(13),
+                           static_cast<GLint>(14), static_cast<GLint>(15),
+                           static_cast<GLsizei>(16), static_cast<GLsizei>(17));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CopyTexImage2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -422,15 +387,11 @@
 
 TEST_F(GLES2FormatTest, CopyTexSubImage2D) {
   cmds::CopyTexSubImage2D& cmd = *GetBufferAs<cmds::CopyTexSubImage2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLint>(15),
-                           static_cast<GLint>(16),
-                           static_cast<GLsizei>(17),
-                           static_cast<GLsizei>(18));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLint>(13), static_cast<GLint>(14),
+              static_cast<GLint>(15), static_cast<GLint>(16),
+              static_cast<GLsizei>(17), static_cast<GLsizei>(18));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CopyTexSubImage2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -632,10 +593,8 @@
 
 TEST_F(GLES2FormatTest, DrawArrays) {
   cmds::DrawArrays& cmd = *GetBufferAs<cmds::DrawArrays>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLsizei>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLint>(12), static_cast<GLsizei>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawArrays::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -647,11 +606,9 @@
 
 TEST_F(GLES2FormatTest, DrawElements) {
   cmds::DrawElements& cmd = *GetBufferAs<cmds::DrawElements>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLuint>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLsizei>(12),
+              static_cast<GLenum>(13), static_cast<GLuint>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawElements::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -701,11 +658,9 @@
 TEST_F(GLES2FormatTest, FramebufferRenderbuffer) {
   cmds::FramebufferRenderbuffer& cmd =
       *GetBufferAs<cmds::FramebufferRenderbuffer>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLuint>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLenum>(13), static_cast<GLuint>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::FramebufferRenderbuffer::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -718,11 +673,9 @@
 
 TEST_F(GLES2FormatTest, FramebufferTexture2D) {
   cmds::FramebufferTexture2D& cmd = *GetBufferAs<cmds::FramebufferTexture2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLuint>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLenum>(13), static_cast<GLuint>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::FramebufferTexture2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -824,12 +777,10 @@
 
 TEST_F(GLES2FormatTest, GetActiveAttrib) {
   cmds::GetActiveAttrib& cmd = *GetBufferAs<cmds::GetActiveAttrib>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLuint>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14),
-                           static_cast<uint32_t>(15));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14),
+              static_cast<uint32_t>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetActiveAttrib::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -843,12 +794,10 @@
 
 TEST_F(GLES2FormatTest, GetActiveUniform) {
   cmds::GetActiveUniform& cmd = *GetBufferAs<cmds::GetActiveUniform>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLuint>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14),
-                           static_cast<uint32_t>(15));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14),
+              static_cast<uint32_t>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetActiveUniform::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -862,11 +811,9 @@
 
 TEST_F(GLES2FormatTest, GetAttachedShaders) {
   cmds::GetAttachedShaders& cmd = *GetBufferAs<cmds::GetAttachedShaders>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetAttachedShaders::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -879,11 +826,9 @@
 
 TEST_F(GLES2FormatTest, GetAttribLocation) {
   cmds::GetAttribLocation& cmd = *GetBufferAs<cmds::GetAttribLocation>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetAttribLocation::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -896,10 +841,9 @@
 
 TEST_F(GLES2FormatTest, GetBooleanv) {
   cmds::GetBooleanv& cmd = *GetBufferAs<cmds::GetBooleanv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetBooleanv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -911,11 +855,9 @@
 
 TEST_F(GLES2FormatTest, GetBufferParameteriv) {
   cmds::GetBufferParameteriv& cmd = *GetBufferAs<cmds::GetBufferParameteriv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetBufferParameteriv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -939,10 +881,9 @@
 
 TEST_F(GLES2FormatTest, GetFloatv) {
   cmds::GetFloatv& cmd = *GetBufferAs<cmds::GetFloatv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetFloatv::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLenum>(11), cmd.pname);
@@ -954,12 +895,10 @@
 TEST_F(GLES2FormatTest, GetFramebufferAttachmentParameteriv) {
   cmds::GetFramebufferAttachmentParameteriv& cmd =
       *GetBufferAs<cmds::GetFramebufferAttachmentParameteriv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<uint32_t>(14),
-                           static_cast<uint32_t>(15));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLenum>(13), static_cast<uint32_t>(14),
+              static_cast<uint32_t>(15));
   EXPECT_EQ(
       static_cast<uint32_t>(cmds::GetFramebufferAttachmentParameteriv::kCmdId),
       cmd.header.command);
@@ -974,10 +913,9 @@
 
 TEST_F(GLES2FormatTest, GetIntegerv) {
   cmds::GetIntegerv& cmd = *GetBufferAs<cmds::GetIntegerv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetIntegerv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -989,11 +927,9 @@
 
 TEST_F(GLES2FormatTest, GetProgramiv) {
   cmds::GetProgramiv& cmd = *GetBufferAs<cmds::GetProgramiv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetProgramiv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1019,11 +955,9 @@
 TEST_F(GLES2FormatTest, GetRenderbufferParameteriv) {
   cmds::GetRenderbufferParameteriv& cmd =
       *GetBufferAs<cmds::GetRenderbufferParameteriv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetRenderbufferParameteriv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1036,11 +970,9 @@
 
 TEST_F(GLES2FormatTest, GetShaderiv) {
   cmds::GetShaderiv& cmd = *GetBufferAs<cmds::GetShaderiv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetShaderiv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1066,11 +998,9 @@
 TEST_F(GLES2FormatTest, GetShaderPrecisionFormat) {
   cmds::GetShaderPrecisionFormat& cmd =
       *GetBufferAs<cmds::GetShaderPrecisionFormat>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetShaderPrecisionFormat::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1106,11 +1036,9 @@
 
 TEST_F(GLES2FormatTest, GetTexParameterfv) {
   cmds::GetTexParameterfv& cmd = *GetBufferAs<cmds::GetTexParameterfv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetTexParameterfv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1123,11 +1051,9 @@
 
 TEST_F(GLES2FormatTest, GetTexParameteriv) {
   cmds::GetTexParameteriv& cmd = *GetBufferAs<cmds::GetTexParameteriv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetTexParameteriv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1140,11 +1066,9 @@
 
 TEST_F(GLES2FormatTest, GetUniformfv) {
   cmds::GetUniformfv& cmd = *GetBufferAs<cmds::GetUniformfv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLint>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetUniformfv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1157,11 +1081,9 @@
 
 TEST_F(GLES2FormatTest, GetUniformiv) {
   cmds::GetUniformiv& cmd = *GetBufferAs<cmds::GetUniformiv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLint>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetUniformiv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1174,11 +1096,9 @@
 
 TEST_F(GLES2FormatTest, GetUniformLocation) {
   cmds::GetUniformLocation& cmd = *GetBufferAs<cmds::GetUniformLocation>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetUniformLocation::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1191,11 +1111,9 @@
 
 TEST_F(GLES2FormatTest, GetVertexAttribfv) {
   cmds::GetVertexAttribfv& cmd = *GetBufferAs<cmds::GetVertexAttribfv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetVertexAttribfv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1208,11 +1126,9 @@
 
 TEST_F(GLES2FormatTest, GetVertexAttribiv) {
   cmds::GetVertexAttribiv& cmd = *GetBufferAs<cmds::GetVertexAttribiv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetVertexAttribiv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1226,11 +1142,9 @@
 TEST_F(GLES2FormatTest, GetVertexAttribPointerv) {
   cmds::GetVertexAttribPointerv& cmd =
       *GetBufferAs<cmds::GetVertexAttribPointerv>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLenum>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetVertexAttribPointerv::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1254,10 +1168,9 @@
 
 TEST_F(GLES2FormatTest, IsBuffer) {
   cmds::IsBuffer& cmd = *GetBufferAs<cmds::IsBuffer>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsBuffer::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLuint>(11), cmd.buffer);
@@ -1268,10 +1181,9 @@
 
 TEST_F(GLES2FormatTest, IsEnabled) {
   cmds::IsEnabled& cmd = *GetBufferAs<cmds::IsEnabled>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsEnabled::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLenum>(11), cmd.cap);
@@ -1282,10 +1194,9 @@
 
 TEST_F(GLES2FormatTest, IsFramebuffer) {
   cmds::IsFramebuffer& cmd = *GetBufferAs<cmds::IsFramebuffer>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsFramebuffer::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1297,10 +1208,9 @@
 
 TEST_F(GLES2FormatTest, IsProgram) {
   cmds::IsProgram& cmd = *GetBufferAs<cmds::IsProgram>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsProgram::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLuint>(11), cmd.program);
@@ -1311,10 +1221,9 @@
 
 TEST_F(GLES2FormatTest, IsRenderbuffer) {
   cmds::IsRenderbuffer& cmd = *GetBufferAs<cmds::IsRenderbuffer>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsRenderbuffer::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1326,10 +1235,9 @@
 
 TEST_F(GLES2FormatTest, IsShader) {
   cmds::IsShader& cmd = *GetBufferAs<cmds::IsShader>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsShader::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLuint>(11), cmd.shader);
@@ -1340,10 +1248,9 @@
 
 TEST_F(GLES2FormatTest, IsTexture) {
   cmds::IsTexture& cmd = *GetBufferAs<cmds::IsTexture>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsTexture::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLuint>(11), cmd.texture);
@@ -1397,17 +1304,11 @@
 
 TEST_F(GLES2FormatTest, ReadPixels) {
   cmds::ReadPixels& cmd = *GetBufferAs<cmds::ReadPixels>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLsizei>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLenum>(15),
-                           static_cast<GLenum>(16),
-                           static_cast<uint32_t>(17),
-                           static_cast<uint32_t>(18),
-                           static_cast<uint32_t>(19),
-                           static_cast<uint32_t>(20),
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+                           static_cast<GLsizei>(13), static_cast<GLsizei>(14),
+                           static_cast<GLenum>(15), static_cast<GLenum>(16),
+                           static_cast<uint32_t>(17), static_cast<uint32_t>(18),
+                           static_cast<uint32_t>(19), static_cast<uint32_t>(20),
                            static_cast<GLboolean>(21));
   EXPECT_EQ(static_cast<uint32_t>(cmds::ReadPixels::kCmdId),
             cmd.header.command);
@@ -1438,11 +1339,9 @@
 
 TEST_F(GLES2FormatTest, RenderbufferStorage) {
   cmds::RenderbufferStorage& cmd = *GetBufferAs<cmds::RenderbufferStorage>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLsizei>(13),
-                           static_cast<GLsizei>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLsizei>(13), static_cast<GLsizei>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::RenderbufferStorage::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1467,11 +1366,8 @@
 
 TEST_F(GLES2FormatTest, Scissor) {
   cmds::Scissor& cmd = *GetBufferAs<cmds::Scissor>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLsizei>(13),
-                           static_cast<GLsizei>(14));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+                           static_cast<GLsizei>(13), static_cast<GLsizei>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Scissor::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLint>(11), cmd.x);
@@ -1483,14 +1379,10 @@
 
 TEST_F(GLES2FormatTest, ShaderBinary) {
   cmds::ShaderBinary& cmd = *GetBufferAs<cmds::ShaderBinary>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLsizei>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<GLenum>(14),
-                           static_cast<uint32_t>(15),
-                           static_cast<uint32_t>(16),
-                           static_cast<GLsizei>(17));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLsizei>(11),
+                           static_cast<uint32_t>(12), static_cast<uint32_t>(13),
+                           static_cast<GLenum>(14), static_cast<uint32_t>(15),
+                           static_cast<uint32_t>(16), static_cast<GLsizei>(17));
   EXPECT_EQ(static_cast<uint32_t>(cmds::ShaderBinary::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1518,10 +1410,8 @@
 
 TEST_F(GLES2FormatTest, StencilFunc) {
   cmds::StencilFunc& cmd = *GetBufferAs<cmds::StencilFunc>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLuint>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLint>(12), static_cast<GLuint>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilFunc::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1533,11 +1423,9 @@
 
 TEST_F(GLES2FormatTest, StencilFuncSeparate) {
   cmds::StencilFuncSeparate& cmd = *GetBufferAs<cmds::StencilFuncSeparate>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLuint>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLint>(13), static_cast<GLuint>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilFuncSeparate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1572,10 +1460,8 @@
 
 TEST_F(GLES2FormatTest, StencilOp) {
   cmds::StencilOp& cmd = *GetBufferAs<cmds::StencilOp>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLenum>(12), static_cast<GLenum>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilOp::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLenum>(11), cmd.fail);
@@ -1586,11 +1472,9 @@
 
 TEST_F(GLES2FormatTest, StencilOpSeparate) {
   cmds::StencilOpSeparate& cmd = *GetBufferAs<cmds::StencilOpSeparate>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLenum>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLenum>(13), static_cast<GLenum>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::StencilOpSeparate::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1603,16 +1487,12 @@
 
 TEST_F(GLES2FormatTest, TexImage2D) {
   cmds::TexImage2D& cmd = *GetBufferAs<cmds::TexImage2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLenum>(16),
-                           static_cast<GLenum>(17),
-                           static_cast<uint32_t>(18),
-                           static_cast<uint32_t>(19));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLint>(13), static_cast<GLsizei>(14),
+              static_cast<GLsizei>(15), static_cast<GLenum>(16),
+              static_cast<GLenum>(17), static_cast<uint32_t>(18),
+              static_cast<uint32_t>(19));
   EXPECT_EQ(static_cast<uint32_t>(cmds::TexImage2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1630,10 +1510,8 @@
 
 TEST_F(GLES2FormatTest, TexParameterf) {
   cmds::TexParameterf& cmd = *GetBufferAs<cmds::TexParameterf>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLfloat>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLenum>(12), static_cast<GLfloat>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameterf::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1665,10 +1543,8 @@
 
 TEST_F(GLES2FormatTest, TexParameteri) {
   cmds::TexParameteri& cmd = *GetBufferAs<cmds::TexParameteri>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLint>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLenum>(12), static_cast<GLint>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameteri::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1700,18 +1576,12 @@
 
 TEST_F(GLES2FormatTest, TexSubImage2D) {
   cmds::TexSubImage2D& cmd = *GetBufferAs<cmds::TexSubImage2D>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLsizei>(16),
-                           static_cast<GLenum>(17),
-                           static_cast<GLenum>(18),
-                           static_cast<uint32_t>(19),
-                           static_cast<uint32_t>(20),
-                           static_cast<GLboolean>(21));
+  void* next_cmd = cmd.Set(
+      &cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+      static_cast<GLint>(13), static_cast<GLint>(14), static_cast<GLsizei>(15),
+      static_cast<GLsizei>(16), static_cast<GLenum>(17),
+      static_cast<GLenum>(18), static_cast<uint32_t>(19),
+      static_cast<uint32_t>(20), static_cast<GLboolean>(21));
   EXPECT_EQ(static_cast<uint32_t>(cmds::TexSubImage2D::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1797,10 +1667,8 @@
 
 TEST_F(GLES2FormatTest, Uniform2f) {
   cmds::Uniform2f& cmd = *GetBufferAs<cmds::Uniform2f>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLfloat>(12),
-                           static_cast<GLfloat>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
+                           static_cast<GLfloat>(12), static_cast<GLfloat>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2f::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
@@ -1835,9 +1703,7 @@
 
 TEST_F(GLES2FormatTest, Uniform2i) {
   cmds::Uniform2i& cmd = *GetBufferAs<cmds::Uniform2i>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
                            static_cast<GLint>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform2i::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -1873,11 +1739,9 @@
 
 TEST_F(GLES2FormatTest, Uniform3f) {
   cmds::Uniform3f& cmd = *GetBufferAs<cmds::Uniform3f>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLfloat>(12),
-                           static_cast<GLfloat>(13),
-                           static_cast<GLfloat>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLfloat>(12),
+              static_cast<GLfloat>(13), static_cast<GLfloat>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3f::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
@@ -1915,11 +1779,8 @@
 
 TEST_F(GLES2FormatTest, Uniform3i) {
   cmds::Uniform3i& cmd = *GetBufferAs<cmds::Uniform3i>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+                           static_cast<GLint>(13), static_cast<GLint>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform3i::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
@@ -1957,12 +1818,9 @@
 
 TEST_F(GLES2FormatTest, Uniform4f) {
   cmds::Uniform4f& cmd = *GetBufferAs<cmds::Uniform4f>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLfloat>(12),
-                           static_cast<GLfloat>(13),
-                           static_cast<GLfloat>(14),
-                           static_cast<GLfloat>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
+                           static_cast<GLfloat>(12), static_cast<GLfloat>(13),
+                           static_cast<GLfloat>(14), static_cast<GLfloat>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4f::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLint>(11), cmd.location);
@@ -2003,11 +1861,8 @@
 
 TEST_F(GLES2FormatTest, Uniform4i) {
   cmds::Uniform4i& cmd = *GetBufferAs<cmds::Uniform4i>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+                           static_cast<GLint>(13), static_cast<GLint>(14),
                            static_cast<GLint>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Uniform4i::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2220,10 +2075,8 @@
 
 TEST_F(GLES2FormatTest, VertexAttrib2f) {
   cmds::VertexAttrib2f& cmd = *GetBufferAs<cmds::VertexAttrib2f>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLfloat>(12),
-                           static_cast<GLfloat>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+                           static_cast<GLfloat>(12), static_cast<GLfloat>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib2f::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2254,11 +2107,9 @@
 
 TEST_F(GLES2FormatTest, VertexAttrib3f) {
   cmds::VertexAttrib3f& cmd = *GetBufferAs<cmds::VertexAttrib3f>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLfloat>(12),
-                           static_cast<GLfloat>(13),
-                           static_cast<GLfloat>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLfloat>(12),
+              static_cast<GLfloat>(13), static_cast<GLfloat>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib3f::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2291,12 +2142,9 @@
 
 TEST_F(GLES2FormatTest, VertexAttrib4f) {
   cmds::VertexAttrib4f& cmd = *GetBufferAs<cmds::VertexAttrib4f>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLfloat>(12),
-                           static_cast<GLfloat>(13),
-                           static_cast<GLfloat>(14),
-                           static_cast<GLfloat>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+                           static_cast<GLfloat>(12), static_cast<GLfloat>(13),
+                           static_cast<GLfloat>(14), static_cast<GLfloat>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttrib4f::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2331,13 +2179,10 @@
 
 TEST_F(GLES2FormatTest, VertexAttribPointer) {
   cmds::VertexAttribPointer& cmd = *GetBufferAs<cmds::VertexAttribPointer>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLboolean>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLuint>(16));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLint>(12),
+              static_cast<GLenum>(13), static_cast<GLboolean>(14),
+              static_cast<GLsizei>(15), static_cast<GLuint>(16));
   EXPECT_EQ(static_cast<uint32_t>(cmds::VertexAttribPointer::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2352,11 +2197,8 @@
 
 TEST_F(GLES2FormatTest, Viewport) {
   cmds::Viewport& cmd = *GetBufferAs<cmds::Viewport>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLsizei>(13),
-                           static_cast<GLsizei>(14));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+                           static_cast<GLsizei>(13), static_cast<GLsizei>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::Viewport::kCmdId), cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
   EXPECT_EQ(static_cast<GLint>(11), cmd.x);
@@ -2369,17 +2211,11 @@
 TEST_F(GLES2FormatTest, BlitFramebufferCHROMIUM) {
   cmds::BlitFramebufferCHROMIUM& cmd =
       *GetBufferAs<cmds::BlitFramebufferCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLint>(15),
-                           static_cast<GLint>(16),
-                           static_cast<GLint>(17),
-                           static_cast<GLint>(18),
-                           static_cast<GLbitfield>(19),
-                           static_cast<GLenum>(20));
+  void* next_cmd = cmd.Set(
+      &cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+      static_cast<GLint>(13), static_cast<GLint>(14), static_cast<GLint>(15),
+      static_cast<GLint>(16), static_cast<GLint>(17), static_cast<GLint>(18),
+      static_cast<GLbitfield>(19), static_cast<GLenum>(20));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BlitFramebufferCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2399,12 +2235,9 @@
 TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleCHROMIUM) {
   cmds::RenderbufferStorageMultisampleCHROMIUM& cmd =
       *GetBufferAs<cmds::RenderbufferStorageMultisampleCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLsizei>(12), static_cast<GLenum>(13),
+                           static_cast<GLsizei>(14), static_cast<GLsizei>(15));
   EXPECT_EQ(static_cast<uint32_t>(
                 cmds::RenderbufferStorageMultisampleCHROMIUM::kCmdId),
             cmd.header.command);
@@ -2420,12 +2253,9 @@
 TEST_F(GLES2FormatTest, RenderbufferStorageMultisampleEXT) {
   cmds::RenderbufferStorageMultisampleEXT& cmd =
       *GetBufferAs<cmds::RenderbufferStorageMultisampleEXT>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLsizei>(12), static_cast<GLenum>(13),
+                           static_cast<GLsizei>(14), static_cast<GLsizei>(15));
   EXPECT_EQ(
       static_cast<uint32_t>(cmds::RenderbufferStorageMultisampleEXT::kCmdId),
       cmd.header.command);
@@ -2441,12 +2271,9 @@
 TEST_F(GLES2FormatTest, FramebufferTexture2DMultisampleEXT) {
   cmds::FramebufferTexture2DMultisampleEXT& cmd =
       *GetBufferAs<cmds::FramebufferTexture2DMultisampleEXT>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLuint>(14),
-                           static_cast<GLsizei>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLenum>(12), static_cast<GLenum>(13),
+                           static_cast<GLuint>(14), static_cast<GLsizei>(15));
   EXPECT_EQ(
       static_cast<uint32_t>(cmds::FramebufferTexture2DMultisampleEXT::kCmdId),
       cmd.header.command);
@@ -2461,12 +2288,9 @@
 
 TEST_F(GLES2FormatTest, TexStorage2DEXT) {
   cmds::TexStorage2DEXT& cmd = *GetBufferAs<cmds::TexStorage2DEXT>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLsizei>(12), static_cast<GLenum>(13),
+                           static_cast<GLsizei>(14), static_cast<GLsizei>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::TexStorage2DEXT::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2516,11 +2340,9 @@
 
 TEST_F(GLES2FormatTest, BeginQueryEXT) {
   cmds::BeginQueryEXT& cmd = *GetBufferAs<cmds::BeginQueryEXT>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLuint>(12),
-                           static_cast<uint32_t>(13),
-                           static_cast<uint32_t>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLuint>(12),
+              static_cast<uint32_t>(13), static_cast<uint32_t>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::BeginQueryEXT::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2610,10 +2432,9 @@
 
 TEST_F(GLES2FormatTest, IsVertexArrayOES) {
   cmds::IsVertexArrayOES& cmd = *GetBufferAs<cmds::IsVertexArrayOES>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::IsVertexArrayOES::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2645,13 +2466,10 @@
 TEST_F(GLES2FormatTest, GetMaxValueInBufferCHROMIUM) {
   cmds::GetMaxValueInBufferCHROMIUM& cmd =
       *GetBufferAs<cmds::GetMaxValueInBufferCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLuint>(14),
-                           static_cast<uint32_t>(15),
-                           static_cast<uint32_t>(16));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLsizei>(12),
+              static_cast<GLenum>(13), static_cast<GLuint>(14),
+              static_cast<uint32_t>(15), static_cast<uint32_t>(16));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetMaxValueInBufferCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2667,10 +2485,9 @@
 TEST_F(GLES2FormatTest, EnableFeatureCHROMIUM) {
   cmds::EnableFeatureCHROMIUM& cmd =
       *GetBufferAs<cmds::EnableFeatureCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<uint32_t>(12),
+              static_cast<uint32_t>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::EnableFeatureCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2682,10 +2499,8 @@
 
 TEST_F(GLES2FormatTest, ResizeCHROMIUM) {
   cmds::ResizeCHROMIUM& cmd = *GetBufferAs<cmds::ResizeCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLuint>(12),
-                           static_cast<GLfloat>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+                           static_cast<GLuint>(12), static_cast<GLfloat>(13));
   EXPECT_EQ(static_cast<uint32_t>(cmds::ResizeCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2721,13 +2536,10 @@
 TEST_F(GLES2FormatTest, GetMultipleIntegervCHROMIUM) {
   cmds::GetMultipleIntegervCHROMIUM& cmd =
       *GetBufferAs<cmds::GetMultipleIntegervCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<uint32_t>(11),
-                           static_cast<uint32_t>(12),
-                           static_cast<GLuint>(13),
-                           static_cast<uint32_t>(14),
-                           static_cast<uint32_t>(15),
-                           static_cast<GLsizeiptr>(16));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<uint32_t>(11), static_cast<uint32_t>(12),
+              static_cast<GLuint>(13), static_cast<uint32_t>(14),
+              static_cast<uint32_t>(15), static_cast<GLsizeiptr>(16));
   EXPECT_EQ(static_cast<uint32_t>(cmds::GetMultipleIntegervCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2769,11 +2581,8 @@
 TEST_F(GLES2FormatTest, PostSubBufferCHROMIUM) {
   cmds::PostSubBufferCHROMIUM& cmd =
       *GetBufferAs<cmds::PostSubBufferCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11), static_cast<GLint>(12),
+                           static_cast<GLint>(13), static_cast<GLint>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::PostSubBufferCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2787,12 +2596,9 @@
 TEST_F(GLES2FormatTest, TexImageIOSurface2DCHROMIUM) {
   cmds::TexImageIOSurface2DCHROMIUM& cmd =
       *GetBufferAs<cmds::TexImageIOSurface2DCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLsizei>(13),
-                           static_cast<GLuint>(14),
-                           static_cast<GLuint>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLsizei>(12), static_cast<GLsizei>(13),
+                           static_cast<GLuint>(14), static_cast<GLuint>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::TexImageIOSurface2DCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2806,13 +2612,10 @@
 
 TEST_F(GLES2FormatTest, CopyTextureCHROMIUM) {
   cmds::CopyTextureCHROMIUM& cmd = *GetBufferAs<cmds::CopyTextureCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLint>(15),
-                           static_cast<GLenum>(16));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLenum>(13), static_cast<GLint>(14),
+              static_cast<GLint>(15), static_cast<GLenum>(16));
   EXPECT_EQ(static_cast<uint32_t>(cmds::CopyTextureCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2828,11 +2631,9 @@
 TEST_F(GLES2FormatTest, DrawArraysInstancedANGLE) {
   cmds::DrawArraysInstancedANGLE& cmd =
       *GetBufferAs<cmds::DrawArraysInstancedANGLE>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLsizei>(13),
-                           static_cast<GLsizei>(14));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLsizei>(13), static_cast<GLsizei>(14));
   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawArraysInstancedANGLE::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -2846,12 +2647,9 @@
 TEST_F(GLES2FormatTest, DrawElementsInstancedANGLE) {
   cmds::DrawElementsInstancedANGLE& cmd =
       *GetBufferAs<cmds::DrawElementsInstancedANGLE>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLsizei>(12),
-                           static_cast<GLenum>(13),
-                           static_cast<GLuint>(14),
-                           static_cast<GLsizei>(15));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLenum>(11),
+                           static_cast<GLsizei>(12), static_cast<GLenum>(13),
+                           static_cast<GLuint>(14), static_cast<GLsizei>(15));
   EXPECT_EQ(static_cast<uint32_t>(cmds::DrawElementsInstancedANGLE::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -3129,10 +2927,8 @@
 TEST_F(GLES2FormatTest, BindUniformLocationCHROMIUMBucket) {
   cmds::BindUniformLocationCHROMIUMBucket& cmd =
       *GetBufferAs<cmds::BindUniformLocationCHROMIUMBucket>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLuint>(11),
-                           static_cast<GLint>(12),
-                           static_cast<uint32_t>(13));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
+                           static_cast<GLint>(12), static_cast<uint32_t>(13));
   EXPECT_EQ(
       static_cast<uint32_t>(cmds::BindUniformLocationCHROMIUMBucket::kCmdId),
       cmd.header.command);
@@ -3191,20 +2987,13 @@
 TEST_F(GLES2FormatTest, AsyncTexSubImage2DCHROMIUM) {
   cmds::AsyncTexSubImage2DCHROMIUM& cmd =
       *GetBufferAs<cmds::AsyncTexSubImage2DCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLsizei>(16),
-                           static_cast<GLenum>(17),
-                           static_cast<GLenum>(18),
-                           static_cast<uint32_t>(19),
-                           static_cast<uint32_t>(20),
-                           static_cast<uint32_t>(21),
-                           static_cast<uint32_t>(22),
-                           static_cast<uint32_t>(23));
+  void* next_cmd = cmd.Set(
+      &cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+      static_cast<GLint>(13), static_cast<GLint>(14), static_cast<GLsizei>(15),
+      static_cast<GLsizei>(16), static_cast<GLenum>(17),
+      static_cast<GLenum>(18), static_cast<uint32_t>(19),
+      static_cast<uint32_t>(20), static_cast<uint32_t>(21),
+      static_cast<uint32_t>(22), static_cast<uint32_t>(23));
   EXPECT_EQ(static_cast<uint32_t>(cmds::AsyncTexSubImage2DCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -3227,19 +3016,13 @@
 TEST_F(GLES2FormatTest, AsyncTexImage2DCHROMIUM) {
   cmds::AsyncTexImage2DCHROMIUM& cmd =
       *GetBufferAs<cmds::AsyncTexImage2DCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLenum>(11),
-                           static_cast<GLint>(12),
-                           static_cast<GLint>(13),
-                           static_cast<GLsizei>(14),
-                           static_cast<GLsizei>(15),
-                           static_cast<GLenum>(16),
-                           static_cast<GLenum>(17),
-                           static_cast<uint32_t>(18),
-                           static_cast<uint32_t>(19),
-                           static_cast<uint32_t>(20),
-                           static_cast<uint32_t>(21),
-                           static_cast<uint32_t>(22));
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLint>(12),
+              static_cast<GLint>(13), static_cast<GLsizei>(14),
+              static_cast<GLsizei>(15), static_cast<GLenum>(16),
+              static_cast<GLenum>(17), static_cast<uint32_t>(18),
+              static_cast<uint32_t>(19), static_cast<uint32_t>(20),
+              static_cast<uint32_t>(21), static_cast<uint32_t>(22));
   EXPECT_EQ(static_cast<uint32_t>(cmds::AsyncTexImage2DCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
@@ -3359,18 +3142,12 @@
 TEST_F(GLES2FormatTest, ScheduleOverlayPlaneCHROMIUM) {
   cmds::ScheduleOverlayPlaneCHROMIUM& cmd =
       *GetBufferAs<cmds::ScheduleOverlayPlaneCHROMIUM>();
-  void* next_cmd = cmd.Set(&cmd,
-                           static_cast<GLint>(11),
-                           static_cast<GLenum>(12),
-                           static_cast<GLuint>(13),
-                           static_cast<GLint>(14),
-                           static_cast<GLint>(15),
-                           static_cast<GLint>(16),
-                           static_cast<GLint>(17),
-                           static_cast<GLfloat>(18),
-                           static_cast<GLfloat>(19),
-                           static_cast<GLfloat>(20),
-                           static_cast<GLfloat>(21));
+  void* next_cmd = cmd.Set(&cmd, static_cast<GLint>(11),
+                           static_cast<GLenum>(12), static_cast<GLuint>(13),
+                           static_cast<GLint>(14), static_cast<GLint>(15),
+                           static_cast<GLint>(16), static_cast<GLint>(17),
+                           static_cast<GLfloat>(18), static_cast<GLfloat>(19),
+                           static_cast<GLfloat>(20), static_cast<GLfloat>(21));
   EXPECT_EQ(static_cast<uint32_t>(cmds::ScheduleOverlayPlaneCHROMIUM::kCmdId),
             cmd.header.command);
   EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
diff --git a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
index 5d7cebd..aba98aa 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
@@ -3781,8 +3781,8 @@
       {GL_DEPTH_ATTACHMENT, "GL_DEPTH_ATTACHMENT"},
       {GL_STENCIL_ATTACHMENT, "GL_STENCIL_ATTACHMENT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringBackbufferAttachment(uint32_t value) {
@@ -3791,24 +3791,24 @@
       {GL_DEPTH_EXT, "GL_DEPTH_EXT"},
       {GL_STENCIL_EXT, "GL_STENCIL_EXT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringBlitFilter(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_NEAREST, "GL_NEAREST"}, {GL_LINEAR, "GL_LINEAR"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferParameter(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_BUFFER_SIZE, "GL_BUFFER_SIZE"}, {GL_BUFFER_USAGE, "GL_BUFFER_USAGE"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferTarget(uint32_t value) {
@@ -3816,8 +3816,8 @@
       {GL_ARRAY_BUFFER, "GL_ARRAY_BUFFER"},
       {GL_ELEMENT_ARRAY_BUFFER, "GL_ELEMENT_ARRAY_BUFFER"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringBufferUsage(uint32_t value) {
@@ -3826,8 +3826,8 @@
       {GL_STATIC_DRAW, "GL_STATIC_DRAW"},
       {GL_DYNAMIC_DRAW, "GL_DYNAMIC_DRAW"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringCapability(uint32_t value) {
@@ -3842,8 +3842,8 @@
       {GL_SCISSOR_TEST, "GL_SCISSOR_TEST"},
       {GL_STENCIL_TEST, "GL_STENCIL_TEST"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringCmpFunction(uint32_t value) {
@@ -3857,8 +3857,8 @@
       {GL_GEQUAL, "GL_GEQUAL"},
       {GL_ALWAYS, "GL_ALWAYS"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringCompressedTextureFormat(uint32_t value) {
@@ -3875,8 +3875,8 @@
       {GL_TRIANGLE_FAN, "GL_TRIANGLE_FAN"},
       {GL_TRIANGLES, "GL_TRIANGLES"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringDstBlendFactor(uint32_t value) {
@@ -3896,8 +3896,8 @@
       {GL_CONSTANT_ALPHA, "GL_CONSTANT_ALPHA"},
       {GL_ONE_MINUS_CONSTANT_ALPHA, "GL_ONE_MINUS_CONSTANT_ALPHA"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringEquation(uint32_t value) {
@@ -3906,16 +3906,16 @@
       {GL_FUNC_SUBTRACT, "GL_FUNC_SUBTRACT"},
       {GL_FUNC_REVERSE_SUBTRACT, "GL_FUNC_REVERSE_SUBTRACT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringFaceMode(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_CW, "GL_CW"}, {GL_CCW, "GL_CCW"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringFaceType(uint32_t value) {
@@ -3924,8 +3924,8 @@
       {GL_BACK, "GL_BACK"},
       {GL_FRONT_AND_BACK, "GL_FRONT_AND_BACK"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringFrameBufferParameter(uint32_t value) {
@@ -3939,16 +3939,16 @@
       {GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,
        "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringFrameBufferTarget(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_FRAMEBUFFER, "GL_FRAMEBUFFER"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringGLState(uint32_t value) {
@@ -4050,8 +4050,8 @@
       {GL_SCISSOR_TEST, "GL_SCISSOR_TEST"},
       {GL_STENCIL_TEST, "GL_STENCIL_TEST"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringGetMaxIndexType(uint32_t value) {
@@ -4060,8 +4060,8 @@
       {GL_UNSIGNED_SHORT, "GL_UNSIGNED_SHORT"},
       {GL_UNSIGNED_INT, "GL_UNSIGNED_INT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringGetTexParamTarget(uint32_t value) {
@@ -4069,8 +4069,8 @@
       {GL_TEXTURE_2D, "GL_TEXTURE_2D"},
       {GL_TEXTURE_CUBE_MAP, "GL_TEXTURE_CUBE_MAP"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringHintMode(uint32_t value) {
@@ -4079,24 +4079,24 @@
       {GL_NICEST, "GL_NICEST"},
       {GL_DONT_CARE, "GL_DONT_CARE"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringHintTarget(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_GENERATE_MIPMAP_HINT, "GL_GENERATE_MIPMAP_HINT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringImageInternalFormat(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_RGB, "GL_RGB"}, {GL_RGBA, "GL_RGBA"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringImageUsage(uint32_t value) {
@@ -4104,8 +4104,8 @@
       {GL_MAP_CHROMIUM, "GL_MAP_CHROMIUM"},
       {GL_SCANOUT_CHROMIUM, "GL_SCANOUT_CHROMIUM"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringIndexType(uint32_t value) {
@@ -4113,8 +4113,8 @@
       {GL_UNSIGNED_BYTE, "GL_UNSIGNED_BYTE"},
       {GL_UNSIGNED_SHORT, "GL_UNSIGNED_SHORT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringMatrixMode(uint32_t value) {
@@ -4122,8 +4122,8 @@
       {GL_PATH_PROJECTION_CHROMIUM, "GL_PATH_PROJECTION_CHROMIUM"},
       {GL_PATH_MODELVIEW_CHROMIUM, "GL_PATH_MODELVIEW_CHROMIUM"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringPixelStore(uint32_t value) {
@@ -4136,8 +4136,8 @@
       {GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM,
        "GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringPixelType(uint32_t value) {
@@ -4147,8 +4147,8 @@
       {GL_UNSIGNED_SHORT_4_4_4_4, "GL_UNSIGNED_SHORT_4_4_4_4"},
       {GL_UNSIGNED_SHORT_5_5_5_1, "GL_UNSIGNED_SHORT_5_5_5_1"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringProgramParameter(uint32_t value) {
@@ -4163,8 +4163,8 @@
       {GL_ACTIVE_UNIFORMS, "GL_ACTIVE_UNIFORMS"},
       {GL_ACTIVE_UNIFORM_MAX_LENGTH, "GL_ACTIVE_UNIFORM_MAX_LENGTH"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringQueryObjectParameter(uint32_t value) {
@@ -4172,16 +4172,16 @@
       {GL_QUERY_RESULT_EXT, "GL_QUERY_RESULT_EXT"},
       {GL_QUERY_RESULT_AVAILABLE_EXT, "GL_QUERY_RESULT_AVAILABLE_EXT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringQueryParameter(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_CURRENT_QUERY_EXT, "GL_CURRENT_QUERY_EXT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringQueryTarget(uint32_t value) {
@@ -4197,16 +4197,16 @@
        "GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM"},
       {GL_COMMANDS_COMPLETED_CHROMIUM, "GL_COMMANDS_COMPLETED_CHROMIUM"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringReadPixelFormat(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_ALPHA, "GL_ALPHA"}, {GL_RGB, "GL_RGB"}, {GL_RGBA, "GL_RGBA"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringReadPixelType(uint32_t value) {
@@ -4216,8 +4216,8 @@
       {GL_UNSIGNED_SHORT_4_4_4_4, "GL_UNSIGNED_SHORT_4_4_4_4"},
       {GL_UNSIGNED_SHORT_5_5_5_1, "GL_UNSIGNED_SHORT_5_5_5_1"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringRenderBufferFormat(uint32_t value) {
@@ -4228,8 +4228,8 @@
       {GL_DEPTH_COMPONENT16, "GL_DEPTH_COMPONENT16"},
       {GL_STENCIL_INDEX8, "GL_STENCIL_INDEX8"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringRenderBufferParameter(uint32_t value) {
@@ -4244,16 +4244,16 @@
       {GL_RENDERBUFFER_HEIGHT, "GL_RENDERBUFFER_HEIGHT"},
       {GL_RENDERBUFFER_INTERNAL_FORMAT, "GL_RENDERBUFFER_INTERNAL_FORMAT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringRenderBufferTarget(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_RENDERBUFFER, "GL_RENDERBUFFER"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringResetStatus(uint32_t value) {
@@ -4262,8 +4262,8 @@
       {GL_INNOCENT_CONTEXT_RESET_ARB, "GL_INNOCENT_CONTEXT_RESET_ARB"},
       {GL_UNKNOWN_CONTEXT_RESET_ARB, "GL_UNKNOWN_CONTEXT_RESET_ARB"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringShaderBinaryFormat(uint32_t value) {
@@ -4280,8 +4280,8 @@
       {GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE,
        "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringShaderPrecision(uint32_t value) {
@@ -4293,8 +4293,8 @@
       {GL_MEDIUM_INT, "GL_MEDIUM_INT"},
       {GL_HIGH_INT, "GL_HIGH_INT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringShaderType(uint32_t value) {
@@ -4302,8 +4302,8 @@
       {GL_VERTEX_SHADER, "GL_VERTEX_SHADER"},
       {GL_FRAGMENT_SHADER, "GL_FRAGMENT_SHADER"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringSrcBlendFactor(uint32_t value) {
@@ -4324,8 +4324,8 @@
       {GL_ONE_MINUS_CONSTANT_ALPHA, "GL_ONE_MINUS_CONSTANT_ALPHA"},
       {GL_SRC_ALPHA_SATURATE, "GL_SRC_ALPHA_SATURATE"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringStencilOp(uint32_t value) {
@@ -4339,8 +4339,8 @@
       {GL_DECR_WRAP, "GL_DECR_WRAP"},
       {GL_INVERT, "GL_INVERT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringStringType(uint32_t value) {
@@ -4351,8 +4351,8 @@
       {GL_SHADING_LANGUAGE_VERSION, "GL_SHADING_LANGUAGE_VERSION"},
       {GL_EXTENSIONS, "GL_EXTENSIONS"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureBindTarget(uint32_t value) {
@@ -4360,8 +4360,8 @@
       {GL_TEXTURE_2D, "GL_TEXTURE_2D"},
       {GL_TEXTURE_CUBE_MAP, "GL_TEXTURE_CUBE_MAP"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureFormat(uint32_t value) {
@@ -4372,8 +4372,8 @@
       {GL_RGB, "GL_RGB"},
       {GL_RGBA, "GL_RGBA"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureInternalFormat(uint32_t value) {
@@ -4384,8 +4384,8 @@
       {GL_RGB, "GL_RGB"},
       {GL_RGBA, "GL_RGBA"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureInternalFormatStorage(uint32_t value) {
@@ -4399,16 +4399,16 @@
       {GL_RGB8_OES, "GL_RGB8_OES"},
       {GL_RGBA8_OES, "GL_RGBA8_OES"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureMagFilterMode(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_NEAREST, "GL_NEAREST"}, {GL_LINEAR, "GL_LINEAR"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureMinFilterMode(uint32_t value) {
@@ -4420,8 +4420,8 @@
       {GL_NEAREST_MIPMAP_LINEAR, "GL_NEAREST_MIPMAP_LINEAR"},
       {GL_LINEAR_MIPMAP_LINEAR, "GL_LINEAR_MIPMAP_LINEAR"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureParameter(uint32_t value) {
@@ -4432,8 +4432,8 @@
       {GL_TEXTURE_WRAP_S, "GL_TEXTURE_WRAP_S"},
       {GL_TEXTURE_WRAP_T, "GL_TEXTURE_WRAP_T"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTexturePool(uint32_t value) {
@@ -4442,8 +4442,8 @@
       {GL_TEXTURE_POOL_UNMANAGED_CHROMIUM,
        "GL_TEXTURE_POOL_UNMANAGED_CHROMIUM"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureTarget(uint32_t value) {
@@ -4456,8 +4456,8 @@
       {GL_TEXTURE_CUBE_MAP_POSITIVE_Z, "GL_TEXTURE_CUBE_MAP_POSITIVE_Z"},
       {GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureUsage(uint32_t value) {
@@ -4465,8 +4465,8 @@
       {GL_NONE, "GL_NONE"},
       {GL_FRAMEBUFFER_ATTACHMENT_ANGLE, "GL_FRAMEBUFFER_ATTACHMENT_ANGLE"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringTextureWrapMode(uint32_t value) {
@@ -4475,8 +4475,8 @@
       {GL_MIRRORED_REPEAT, "GL_MIRRORED_REPEAT"},
       {GL_REPEAT, "GL_REPEAT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexAttribType(uint32_t value) {
@@ -4487,8 +4487,8 @@
       {GL_UNSIGNED_SHORT, "GL_UNSIGNED_SHORT"},
       {GL_FLOAT, "GL_FLOAT"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexAttribute(uint32_t value) {
@@ -4502,16 +4502,16 @@
       {GL_VERTEX_ATTRIB_ARRAY_TYPE, "GL_VERTEX_ATTRIB_ARRAY_TYPE"},
       {GL_CURRENT_VERTEX_ATTRIB, "GL_CURRENT_VERTEX_ATTRIB"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 std::string GLES2Util::GetStringVertexPointer(uint32_t value) {
   static const EnumToString string_table[] = {
       {GL_VERTEX_ATTRIB_ARRAY_POINTER, "GL_VERTEX_ATTRIB_ARRAY_POINTER"},
   };
-  return GLES2Util::GetQualifiedEnumString(
-      string_table, arraysize(string_table), value);
+  return GLES2Util::GetQualifiedEnumString(string_table,
+                                           arraysize(string_table), value);
 }
 
 #endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_UTILS_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/service/command_buffer_service.cc b/gpu/command_buffer/service/command_buffer_service.cc
index 2c732c6..1453a0a 100644
--- a/gpu/command_buffer/service/command_buffer_service.cc
+++ b/gpu/command_buffer/service/command_buffer_service.cc
@@ -39,9 +39,7 @@
 
 CommandBufferService::State CommandBufferService::GetLastState() {
   State state;
-  state.num_entries = num_entries_;
   state.get_offset = get_offset_;
-  state.put_offset = put_offset_;
   state.token = token_;
   state.error = error_;
   state.context_lost_reason = context_lost_reason_;
@@ -174,6 +172,10 @@
   context_lost_reason_ = reason;
 }
 
+int32 CommandBufferService::GetPutOffset() {
+  return put_offset_;
+}
+
 void CommandBufferService::SetPutOffsetChangeCallback(
     const base::Closure& callback) {
   put_offset_change_callback_ = callback;
diff --git a/gpu/command_buffer/service/command_buffer_service.h b/gpu/command_buffer/service/command_buffer_service.h
index 15f865f..69b9ad7 100644
--- a/gpu/command_buffer/service/command_buffer_service.h
+++ b/gpu/command_buffer/service/command_buffer_service.h
@@ -33,6 +33,9 @@
   // NOTE: if calling this in conjunction with SetParseError,
   // call this first.
   virtual void SetContextLostReason(error::ContextLostReason) = 0;
+
+  // Allows the reader to obtain the current put offset.
+  virtual int32 GetPutOffset() = 0;
 };
 
 // An object that implements a shared memory command buffer and a synchronous
@@ -61,6 +64,7 @@
   void SetToken(int32 token) override;
   void SetParseError(error::Error error) override;
   void SetContextLostReason(error::ContextLostReason) override;
+  int32 GetPutOffset() override;
 
   // Sets a callback that is called whenever the put offset is changed. When
   // called with sync==true, the callback must not return until some progress
diff --git a/gpu/command_buffer/service/command_buffer_service_unittest.cc b/gpu/command_buffer/service/command_buffer_service_unittest.cc
index 3af2d05..8a7d43c 100644
--- a/gpu/command_buffer/service/command_buffer_service_unittest.cc
+++ b/gpu/command_buffer/service/command_buffer_service_unittest.cc
@@ -38,7 +38,7 @@
   }
 
   int32 GetPutOffset() {
-    return command_buffer_->GetLastState().put_offset;
+    return command_buffer_->GetPutOffset();
   }
 
   int32 GetToken() {
@@ -65,7 +65,7 @@
   EXPECT_TRUE(Initialize(1024));
   CommandBuffer::State state = command_buffer_->GetLastState();
   EXPECT_EQ(0, state.get_offset);
-  EXPECT_EQ(0, state.put_offset);
+  EXPECT_EQ(0, command_buffer_->GetPutOffset());
   EXPECT_EQ(0, state.token);
   EXPECT_EQ(error::kNoError, state.error);
 }
diff --git a/gpu/command_buffer/service/context_state_impl_autogen.h b/gpu/command_buffer/service/context_state_impl_autogen.h
index 1b1e5fe..037ac6c 100644
--- a/gpu/command_buffer/service/context_state_impl_autogen.h
+++ b/gpu/command_buffer/service/context_state_impl_autogen.h
@@ -182,9 +182,7 @@
         (blend_color_green != prev_state->blend_color_green) ||
         (blend_color_blue != prev_state->blend_color_blue) ||
         (blend_color_alpha != prev_state->blend_color_alpha))
-      glBlendColor(blend_color_red,
-                   blend_color_green,
-                   blend_color_blue,
+      glBlendColor(blend_color_red, blend_color_green, blend_color_blue,
                    blend_color_alpha);
     if ((blend_equation_rgb != prev_state->blend_equation_rgb) ||
         (blend_equation_alpha != prev_state->blend_equation_alpha))
@@ -193,17 +191,13 @@
         (blend_dest_rgb != prev_state->blend_dest_rgb) ||
         (blend_source_alpha != prev_state->blend_source_alpha) ||
         (blend_dest_alpha != prev_state->blend_dest_alpha))
-      glBlendFuncSeparate(blend_source_rgb,
-                          blend_dest_rgb,
-                          blend_source_alpha,
+      glBlendFuncSeparate(blend_source_rgb, blend_dest_rgb, blend_source_alpha,
                           blend_dest_alpha);
     if ((color_clear_red != prev_state->color_clear_red) ||
         (color_clear_green != prev_state->color_clear_green) ||
         (color_clear_blue != prev_state->color_clear_blue) ||
         (color_clear_alpha != prev_state->color_clear_alpha))
-      glClearColor(color_clear_red,
-                   color_clear_green,
-                   color_clear_blue,
+      glClearColor(color_clear_red, color_clear_green, color_clear_blue,
                    color_clear_alpha);
     if ((depth_clear != prev_state->depth_clear))
       glClearDepth(depth_clear);
@@ -213,10 +207,8 @@
         (cached_color_mask_green != prev_state->cached_color_mask_green) ||
         (cached_color_mask_blue != prev_state->cached_color_mask_blue) ||
         (cached_color_mask_alpha != prev_state->cached_color_mask_alpha))
-      glColorMask(cached_color_mask_red,
-                  cached_color_mask_green,
-                  cached_color_mask_blue,
-                  cached_color_mask_alpha);
+      glColorMask(cached_color_mask_red, cached_color_mask_green,
+                  cached_color_mask_blue, cached_color_mask_alpha);
     if ((cull_mode != prev_state->cull_mode))
       glCullFace(cull_mode);
     if ((depth_func != prev_state->depth_func))
@@ -240,15 +232,13 @@
     if ((line_width != prev_state->line_width))
       glLineWidth(line_width);
     if (feature_info_->feature_flags().chromium_path_rendering) {
-      if (memcmp(prev_state->modelview_matrix,
-                 modelview_matrix,
+      if (memcmp(prev_state->modelview_matrix, modelview_matrix,
                  sizeof(GLfloat) * 16)) {
         glMatrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, modelview_matrix);
       }
     }
     if (feature_info_->feature_flags().chromium_path_rendering) {
-      if (memcmp(prev_state->projection_matrix,
-                 projection_matrix,
+      if (memcmp(prev_state->projection_matrix, projection_matrix,
                  sizeof(GLfloat) * 16)) {
         glMatrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, projection_matrix);
       }
@@ -273,13 +263,13 @@
     if ((stencil_front_func != prev_state->stencil_front_func) ||
         (stencil_front_ref != prev_state->stencil_front_ref) ||
         (stencil_front_mask != prev_state->stencil_front_mask))
-      glStencilFuncSeparate(
-          GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask);
+      glStencilFuncSeparate(GL_FRONT, stencil_front_func, stencil_front_ref,
+                            stencil_front_mask);
     if ((stencil_back_func != prev_state->stencil_back_func) ||
         (stencil_back_ref != prev_state->stencil_back_ref) ||
         (stencil_back_mask != prev_state->stencil_back_mask))
-      glStencilFuncSeparate(
-          GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask);
+      glStencilFuncSeparate(GL_BACK, stencil_back_func, stencil_back_ref,
+                            stencil_back_mask);
     if ((cached_stencil_front_writemask !=
          prev_state->cached_stencil_front_writemask))
       glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask);
@@ -289,16 +279,12 @@
     if ((stencil_front_fail_op != prev_state->stencil_front_fail_op) ||
         (stencil_front_z_fail_op != prev_state->stencil_front_z_fail_op) ||
         (stencil_front_z_pass_op != prev_state->stencil_front_z_pass_op))
-      glStencilOpSeparate(GL_FRONT,
-                          stencil_front_fail_op,
-                          stencil_front_z_fail_op,
-                          stencil_front_z_pass_op);
+      glStencilOpSeparate(GL_FRONT, stencil_front_fail_op,
+                          stencil_front_z_fail_op, stencil_front_z_pass_op);
     if ((stencil_back_fail_op != prev_state->stencil_back_fail_op) ||
         (stencil_back_z_fail_op != prev_state->stencil_back_z_fail_op) ||
         (stencil_back_z_pass_op != prev_state->stencil_back_z_pass_op))
-      glStencilOpSeparate(GL_BACK,
-                          stencil_back_fail_op,
-                          stencil_back_z_fail_op,
+      glStencilOpSeparate(GL_BACK, stencil_back_fail_op, stencil_back_z_fail_op,
                           stencil_back_z_pass_op);
     if ((viewport_x != prev_state->viewport_x) ||
         (viewport_y != prev_state->viewport_y) ||
@@ -306,23 +292,17 @@
         (viewport_height != prev_state->viewport_height))
       glViewport(viewport_x, viewport_y, viewport_width, viewport_height);
   } else {
-    glBlendColor(blend_color_red,
-                 blend_color_green,
-                 blend_color_blue,
+    glBlendColor(blend_color_red, blend_color_green, blend_color_blue,
                  blend_color_alpha);
     glBlendEquationSeparate(blend_equation_rgb, blend_equation_alpha);
-    glBlendFuncSeparate(
-        blend_source_rgb, blend_dest_rgb, blend_source_alpha, blend_dest_alpha);
-    glClearColor(color_clear_red,
-                 color_clear_green,
-                 color_clear_blue,
+    glBlendFuncSeparate(blend_source_rgb, blend_dest_rgb, blend_source_alpha,
+                        blend_dest_alpha);
+    glClearColor(color_clear_red, color_clear_green, color_clear_blue,
                  color_clear_alpha);
     glClearDepth(depth_clear);
     glClearStencil(stencil_clear);
-    glColorMask(cached_color_mask_red,
-                cached_color_mask_green,
-                cached_color_mask_blue,
-                cached_color_mask_alpha);
+    glColorMask(cached_color_mask_red, cached_color_mask_green,
+                cached_color_mask_blue, cached_color_mask_alpha);
     glCullFace(cull_mode);
     glDepthFunc(depth_func);
     glDepthMask(cached_depth_mask);
@@ -345,19 +325,15 @@
     glPolygonOffset(polygon_offset_factor, polygon_offset_units);
     glSampleCoverage(sample_coverage_value, sample_coverage_invert);
     glScissor(scissor_x, scissor_y, scissor_width, scissor_height);
-    glStencilFuncSeparate(
-        GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask);
-    glStencilFuncSeparate(
-        GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask);
+    glStencilFuncSeparate(GL_FRONT, stencil_front_func, stencil_front_ref,
+                          stencil_front_mask);
+    glStencilFuncSeparate(GL_BACK, stencil_back_func, stencil_back_ref,
+                          stencil_back_mask);
     glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask);
     glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask);
-    glStencilOpSeparate(GL_FRONT,
-                        stencil_front_fail_op,
-                        stencil_front_z_fail_op,
-                        stencil_front_z_pass_op);
-    glStencilOpSeparate(GL_BACK,
-                        stencil_back_fail_op,
-                        stencil_back_z_fail_op,
+    glStencilOpSeparate(GL_FRONT, stencil_front_fail_op,
+                        stencil_front_z_fail_op, stencil_front_z_pass_op);
+    glStencilOpSeparate(GL_BACK, stencil_back_fail_op, stencil_back_z_fail_op,
                         stencil_back_z_pass_op);
     glViewport(viewport_x, viewport_y, viewport_width, viewport_height);
   }
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index 02d914f..86b36ca 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -143,13 +143,13 @@
   GLenum modeRGB = static_cast<GLenum>(c.modeRGB);
   GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha);
   if (!validators_->equation.IsValid(modeRGB)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBlendEquationSeparate", modeRGB, "modeRGB");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendEquationSeparate", modeRGB,
+                                    "modeRGB");
     return error::kNoError;
   }
   if (!validators_->equation.IsValid(modeAlpha)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBlendEquationSeparate", modeAlpha, "modeAlpha");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendEquationSeparate", modeAlpha,
+                                    "modeAlpha");
     return error::kNoError;
   }
   if (state_.blend_equation_rgb != modeRGB ||
@@ -207,13 +207,13 @@
     return error::kNoError;
   }
   if (!validators_->src_blend_factor.IsValid(srcAlpha)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBlendFuncSeparate", srcAlpha, "srcAlpha");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendFuncSeparate", srcAlpha,
+                                    "srcAlpha");
     return error::kNoError;
   }
   if (!validators_->dst_blend_factor.IsValid(dstAlpha)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBlendFuncSeparate", dstAlpha, "dstAlpha");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlendFuncSeparate", dstAlpha,
+                                    "dstAlpha");
     return error::kNoError;
   }
   if (state_.blend_source_rgb != srcRGB || state_.blend_dest_rgb != dstRGB ||
@@ -268,8 +268,8 @@
     return error::kOutOfBounds;
   }
   if (!validators_->frame_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glCheckFramebufferStatus", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glCheckFramebufferStatus", target,
+                                    "target");
     return error::kNoError;
   }
   *result_dst = DoCheckFramebufferStatus(target);
@@ -384,35 +384,35 @@
   const void* data = GetSharedMemoryAs<const void*>(
       c.data_shm_id, c.data_shm_offset, data_size);
   if (!validators_->texture_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glCompressedTexSubImage2D", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glCompressedTexSubImage2D", target,
+                                    "target");
     return error::kNoError;
   }
   if (width < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glCompressedTexSubImage2D", "width < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCompressedTexSubImage2D",
+                       "width < 0");
     return error::kNoError;
   }
   if (height < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glCompressedTexSubImage2D", "height < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCompressedTexSubImage2D",
+                       "height < 0");
     return error::kNoError;
   }
   if (!validators_->compressed_texture_format.IsValid(format)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glCompressedTexSubImage2D", format, "format");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glCompressedTexSubImage2D", format,
+                                    "format");
     return error::kNoError;
   }
   if (imageSize < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glCompressedTexSubImage2D", "imageSize < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCompressedTexSubImage2D",
+                       "imageSize < 0");
     return error::kNoError;
   }
   if (data == NULL) {
     return error::kOutOfBounds;
   }
-  DoCompressedTexSubImage2D(
-      target, level, xoffset, yoffset, width, height, format, imageSize, data);
+  DoCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height,
+                            format, imageSize, data);
   return error::kNoError;
 }
 
@@ -439,8 +439,8 @@
     return error::kNoError;
   }
   if (!validators_->texture_internal_format.IsValid(internalformat)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glCopyTexImage2D", internalformat, "internalformat");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyTexImage2D", internalformat,
+                                    "internalformat");
     return error::kNoError;
   }
   if (width < 0) {
@@ -750,22 +750,22 @@
   GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget);
   GLuint renderbuffer = c.renderbuffer;
   if (!validators_->frame_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferRenderbuffer", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferRenderbuffer", target,
+                                    "target");
     return error::kNoError;
   }
   if (!validators_->attachment.IsValid(attachment)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferRenderbuffer", attachment, "attachment");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferRenderbuffer", attachment,
+                                    "attachment");
     return error::kNoError;
   }
   if (!validators_->render_buffer_target.IsValid(renderbuffertarget)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferRenderbuffer", renderbuffertarget, "renderbuffertarget");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferRenderbuffer",
+                                    renderbuffertarget, "renderbuffertarget");
     return error::kNoError;
   }
-  DoFramebufferRenderbuffer(
-      target, attachment, renderbuffertarget, renderbuffer);
+  DoFramebufferRenderbuffer(target, attachment, renderbuffertarget,
+                            renderbuffer);
   return error::kNoError;
 }
 
@@ -785,13 +785,13 @@
     return error::kNoError;
   }
   if (!validators_->attachment.IsValid(attachment)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferTexture2D", attachment, "attachment");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2D", attachment,
+                                    "attachment");
     return error::kNoError;
   }
   if (!validators_->texture_target.IsValid(textarget)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferTexture2D", textarget, "textarget");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2D", textarget,
+                                    "textarget");
     return error::kNoError;
   }
   DoFramebufferTexture2D(target, attachment, textarget, texture, level);
@@ -1051,18 +1051,18 @@
       c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
   GLint* params = result ? result->GetData() : NULL;
   if (!validators_->frame_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glGetFramebufferAttachmentParameteriv", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetFramebufferAttachmentParameteriv",
+                                    target, "target");
     return error::kNoError;
   }
   if (!validators_->attachment.IsValid(attachment)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glGetFramebufferAttachmentParameteriv", attachment, "attachment");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetFramebufferAttachmentParameteriv",
+                                    attachment, "attachment");
     return error::kNoError;
   }
   if (!validators_->frame_buffer_parameter.IsValid(pname)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glGetFramebufferAttachmentParameteriv", pname, "pname");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetFramebufferAttachmentParameteriv",
+                                    pname, "pname");
     return error::kNoError;
   }
   if (params == NULL) {
@@ -1167,13 +1167,13 @@
       c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
   GLint* params = result ? result->GetData() : NULL;
   if (!validators_->render_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glGetRenderbufferParameteriv", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetRenderbufferParameteriv", target,
+                                    "target");
     return error::kNoError;
   }
   if (!validators_->render_buffer_parameter.IsValid(pname)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glGetRenderbufferParameteriv", pname, "pname");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetRenderbufferParameteriv", pname,
+                                    "pname");
     return error::kNoError;
   }
   if (params == NULL) {
@@ -1599,8 +1599,8 @@
     return error::kNoError;
   }
   if (!validators_->render_buffer_format.IsValid(internalformat)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glRenderbufferStorage", internalformat, "internalformat");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorage", internalformat,
+                                    "internalformat");
     return error::kNoError;
   }
   if (width < 0) {
@@ -2549,8 +2549,7 @@
       *static_cast<const gles2::cmds::BlitFramebufferCHROMIUM*>(cmd_data);
   (void)c;
   if (!features().chromium_framebuffer_multisample) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
-                       "glBlitFramebufferCHROMIUM",
+    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBlitFramebufferCHROMIUM",
                        "function not available");
     return error::kNoError;
   }
@@ -2573,12 +2572,12 @@
   GLbitfield mask = static_cast<GLbitfield>(c.mask);
   GLenum filter = static_cast<GLenum>(c.filter);
   if (!validators_->blit_filter.IsValid(filter)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBlitFramebufferCHROMIUM", filter, "filter");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBlitFramebufferCHROMIUM", filter,
+                                    "filter");
     return error::kNoError;
   }
-  DoBlitFramebufferCHROMIUM(
-      srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+  DoBlitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1,
+                            dstY1, mask, filter);
   return error::kNoError;
 }
 
@@ -2602,8 +2601,8 @@
   GLsizei width = static_cast<GLsizei>(c.width);
   GLsizei height = static_cast<GLsizei>(c.height);
   if (!validators_->render_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glRenderbufferStorageMultisampleCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleCHROMIUM",
+                                    target, "target");
     return error::kNoError;
   }
   if (samples < 0) {
@@ -2614,14 +2613,12 @@
   }
   if (!validators_->render_buffer_format.IsValid(internalformat)) {
     LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleCHROMIUM",
-                                    internalformat,
-                                    "internalformat");
+                                    internalformat, "internalformat");
     return error::kNoError;
   }
   if (width < 0) {
     LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
-                       "glRenderbufferStorageMultisampleCHROMIUM",
-                       "width < 0");
+                       "glRenderbufferStorageMultisampleCHROMIUM", "width < 0");
     return error::kNoError;
   }
   if (height < 0) {
@@ -2630,8 +2627,8 @@
                        "height < 0");
     return error::kNoError;
   }
-  DoRenderbufferStorageMultisampleCHROMIUM(
-      target, samples, internalformat, width, height);
+  DoRenderbufferStorageMultisampleCHROMIUM(target, samples, internalformat,
+                                           width, height);
   return error::kNoError;
 }
 
@@ -2655,33 +2652,32 @@
   GLsizei width = static_cast<GLsizei>(c.width);
   GLsizei height = static_cast<GLsizei>(c.height);
   if (!validators_->render_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glRenderbufferStorageMultisampleEXT", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleEXT",
+                                    target, "target");
     return error::kNoError;
   }
   if (samples < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT",
+                       "samples < 0");
     return error::kNoError;
   }
   if (!validators_->render_buffer_format.IsValid(internalformat)) {
     LOCAL_SET_GL_ERROR_INVALID_ENUM("glRenderbufferStorageMultisampleEXT",
-                                    internalformat,
-                                    "internalformat");
+                                    internalformat, "internalformat");
     return error::kNoError;
   }
   if (width < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT",
+                       "width < 0");
     return error::kNoError;
   }
   if (height < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT",
+                       "height < 0");
     return error::kNoError;
   }
-  DoRenderbufferStorageMultisampleEXT(
-      target, samples, internalformat, width, height);
+  DoRenderbufferStorageMultisampleEXT(target, samples, internalformat, width,
+                                      height);
   return error::kNoError;
 }
 
@@ -2706,28 +2702,27 @@
   GLint level = static_cast<GLint>(c.level);
   GLsizei samples = static_cast<GLsizei>(c.samples);
   if (!validators_->frame_buffer_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferTexture2DMultisampleEXT", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2DMultisampleEXT",
+                                    target, "target");
     return error::kNoError;
   }
   if (!validators_->attachment.IsValid(attachment)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferTexture2DMultisampleEXT", attachment, "attachment");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2DMultisampleEXT",
+                                    attachment, "attachment");
     return error::kNoError;
   }
   if (!validators_->texture_target.IsValid(textarget)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glFramebufferTexture2DMultisampleEXT", textarget, "textarget");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2DMultisampleEXT",
+                                    textarget, "textarget");
     return error::kNoError;
   }
   if (samples < 0) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
-                       "glFramebufferTexture2DMultisampleEXT",
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT",
                        "samples < 0");
     return error::kNoError;
   }
-  DoFramebufferTexture2DMultisample(
-      target, attachment, textarget, texture, level, samples);
+  DoFramebufferTexture2DMultisample(target, attachment, textarget, texture,
+                                    level, samples);
   return error::kNoError;
 }
 
@@ -2751,8 +2746,8 @@
     return error::kNoError;
   }
   if (!validators_->texture_internal_format_storage.IsValid(internalFormat)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glTexStorage2DEXT", internalFormat, "internalFormat");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexStorage2DEXT", internalFormat,
+                                    "internalFormat");
     return error::kNoError;
   }
   if (width < 0) {
@@ -2956,13 +2951,13 @@
     return error::kOutOfBounds;
   }
   if (count < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM", "count < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM",
+                       "count < 0");
     return error::kNoError;
   }
   if (!validators_->get_max_index_type.IsValid(type)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glGetMaxValueInBufferCHROMIUM", type, "type");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetMaxValueInBufferCHROMIUM", type,
+                                    "type");
     return error::kNoError;
   }
   *result_dst = DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset);
@@ -2981,18 +2976,18 @@
   GLuint ioSurfaceId = static_cast<GLuint>(c.ioSurfaceId);
   GLuint plane = static_cast<GLuint>(c.plane);
   if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glTexImageIOSurface2DCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexImageIOSurface2DCHROMIUM", target,
+                                    "target");
     return error::kNoError;
   }
   if (width < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM",
+                       "width < 0");
     return error::kNoError;
   }
   if (height < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM",
+                       "height < 0");
     return error::kNoError;
   }
   DoTexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, plane);
@@ -3012,18 +3007,17 @@
   GLint internalformat = static_cast<GLint>(c.internalformat);
   GLenum dest_type = static_cast<GLenum>(c.dest_type);
   if (!validators_->texture_internal_format.IsValid(internalformat)) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
-                       "glCopyTextureCHROMIUM",
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopyTextureCHROMIUM",
                        "internalformat GL_INVALID_VALUE");
     return error::kNoError;
   }
   if (!validators_->pixel_type.IsValid(dest_type)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glCopyTextureCHROMIUM", dest_type, "dest_type");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyTextureCHROMIUM", dest_type,
+                                    "dest_type");
     return error::kNoError;
   }
-  DoCopyTextureCHROMIUM(
-      target, source_id, dest_id, level, internalformat, dest_type);
+  DoCopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat,
+                        dest_type);
   return error::kNoError;
 }
 
@@ -3045,8 +3039,8 @@
   const GLbyte* mailbox =
       GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size);
   if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glProduceTextureCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glProduceTextureCHROMIUM", target,
+                                    "target");
     return error::kNoError;
   }
   if (mailbox == NULL) {
@@ -3075,8 +3069,8 @@
   const GLbyte* mailbox =
       GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size);
   if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glProduceTextureDirectCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glProduceTextureDirectCHROMIUM", target,
+                                    "target");
     return error::kNoError;
   }
   if (mailbox == NULL) {
@@ -3104,8 +3098,8 @@
   const GLbyte* mailbox =
       GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size);
   if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glConsumeTextureCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glConsumeTextureCHROMIUM", target,
+                                    "target");
     return error::kNoError;
   }
   if (mailbox == NULL) {
@@ -3124,8 +3118,8 @@
   GLenum target = static_cast<GLenum>(c.target);
   GLint imageId = static_cast<GLint>(c.imageId);
   if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glBindTexImage2DCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindTexImage2DCHROMIUM", target,
+                                    "target");
     return error::kNoError;
   }
   DoBindTexImage2DCHROMIUM(target, imageId);
@@ -3141,8 +3135,8 @@
   GLenum target = static_cast<GLenum>(c.target);
   GLint imageId = static_cast<GLint>(c.imageId);
   if (!validators_->texture_bind_target.IsValid(target)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glReleaseTexImage2DCHROMIUM", target, "target");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glReleaseTexImage2DCHROMIUM", target,
+                                    "target");
     return error::kNoError;
   }
   DoReleaseTexImage2DCHROMIUM(target, imageId);
@@ -3167,8 +3161,7 @@
           cmd_data);
   (void)c;
   if (!features().ext_discard_framebuffer) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
-                       "glDiscardFramebufferEXT",
+    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glDiscardFramebufferEXT",
                        "function not available");
     return error::kNoError;
   }
@@ -3185,8 +3178,8 @@
   const GLenum* attachments =
       GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size);
   if (count < 0) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_VALUE, "glDiscardFramebufferEXT", "count < 0");
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glDiscardFramebufferEXT",
+                       "count < 0");
     return error::kNoError;
   }
   if (attachments == NULL) {
@@ -3205,8 +3198,8 @@
   GLenum current = static_cast<GLenum>(c.current);
   GLenum other = static_cast<GLenum>(c.other);
   if (!validators_->reset_status.IsValid(current)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glLoseContextCHROMIUM", current, "current");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glLoseContextCHROMIUM", current,
+                                    "current");
     return error::kNoError;
   }
   if (!validators_->reset_status.IsValid(other)) {
@@ -3251,8 +3244,7 @@
       *static_cast<const gles2::cmds::MatrixLoadfCHROMIUMImmediate*>(cmd_data);
   (void)c;
   if (!features().chromium_path_rendering) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
-                       "glMatrixLoadfCHROMIUM",
+    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glMatrixLoadfCHROMIUM",
                        "function not available");
     return error::kNoError;
   }
@@ -3268,8 +3260,8 @@
   const GLfloat* m =
       GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
   if (!validators_->matrix_mode.IsValid(matrixMode)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glMatrixLoadfCHROMIUM", matrixMode, "matrixMode");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glMatrixLoadfCHROMIUM", matrixMode,
+                                    "matrixMode");
     return error::kNoError;
   }
   if (m == NULL) {
@@ -3286,16 +3278,15 @@
       *static_cast<const gles2::cmds::MatrixLoadIdentityCHROMIUM*>(cmd_data);
   (void)c;
   if (!features().chromium_path_rendering) {
-    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
-                       "glMatrixLoadIdentityCHROMIUM",
+    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glMatrixLoadIdentityCHROMIUM",
                        "function not available");
     return error::kNoError;
   }
 
   GLenum matrixMode = static_cast<GLenum>(c.matrixMode);
   if (!validators_->matrix_mode.IsValid(matrixMode)) {
-    LOCAL_SET_GL_ERROR_INVALID_ENUM(
-        "glMatrixLoadIdentityCHROMIUM", matrixMode, "matrixMode");
+    LOCAL_SET_GL_ERROR_INVALID_ENUM("glMatrixLoadIdentityCHROMIUM", matrixMode,
+                                    "matrixMode");
     return error::kNoError;
   }
   DoMatrixLoadIdentityCHROMIUM(matrixMode);
@@ -3309,8 +3300,8 @@
       *static_cast<const gles2::cmds::BlendBarrierKHR*>(cmd_data);
   (void)c;
   if (!features().blend_equation_advanced) {
-    LOCAL_SET_GL_ERROR(
-        GL_INVALID_OPERATION, "glBlendBarrierKHR", "function not available");
+    LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBlendBarrierKHR",
+                       "function not available");
     return error::kNoError;
   }
 
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h
index b60bd3e..6fe923c 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h
@@ -662,16 +662,12 @@
 }
 
 TEST_P(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) {
-  EXPECT_CALL(*gl_,
-              FramebufferRenderbufferEXT(GL_FRAMEBUFFER,
-                                         GL_COLOR_ATTACHMENT0,
-                                         GL_RENDERBUFFER,
-                                         kServiceRenderbufferId));
+  EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(
+                        GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
+                        kServiceRenderbufferId));
   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(true);
   cmds::FramebufferRenderbuffer cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_RENDERBUFFER,
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
            client_renderbuffer_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
@@ -681,9 +677,7 @@
   EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false);
   cmds::FramebufferRenderbuffer cmd;
-  cmd.Init(GL_DRAW_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_RENDERBUFFER,
+  cmd.Init(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
            client_renderbuffer_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
@@ -693,9 +687,7 @@
   EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false);
   cmds::FramebufferRenderbuffer cmd;
-  cmd.Init(GL_READ_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_RENDERBUFFER,
+  cmd.Init(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
            client_renderbuffer_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
@@ -705,9 +697,7 @@
   EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false);
   cmds::FramebufferRenderbuffer cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_FRAMEBUFFER,
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER,
            client_renderbuffer_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
@@ -715,15 +705,12 @@
 
 TEST_P(GLES2DecoderTest1, FramebufferTexture2DValidArgs) {
   EXPECT_CALL(*gl_,
-              FramebufferTexture2DEXT(GL_FRAMEBUFFER,
-                                      GL_COLOR_ATTACHMENT0,
-                                      GL_TEXTURE_2D,
-                                      kServiceTextureId,
-                                      0));
+              FramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                      GL_TEXTURE_2D, kServiceTextureId, 0));
   SpecializedSetup<cmds::FramebufferTexture2D, 0>(true);
   cmds::FramebufferTexture2D cmd;
-  cmd.Init(
-      GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_);
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+           client_texture_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
 }
@@ -732,9 +719,7 @@
   EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
   SpecializedSetup<cmds::FramebufferTexture2D, 0>(false);
   cmds::FramebufferTexture2D cmd;
-  cmd.Init(GL_DRAW_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_TEXTURE_2D,
+  cmd.Init(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
            client_texture_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
@@ -744,9 +729,7 @@
   EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
   SpecializedSetup<cmds::FramebufferTexture2D, 0>(false);
   cmds::FramebufferTexture2D cmd;
-  cmd.Init(GL_READ_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_TEXTURE_2D,
+  cmd.Init(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
            client_texture_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
@@ -756,9 +739,7 @@
   EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
   SpecializedSetup<cmds::FramebufferTexture2D, 0>(false);
   cmds::FramebufferTexture2D cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_PROXY_TEXTURE_CUBE_MAP,
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_PROXY_TEXTURE_CUBE_MAP,
            client_texture_id_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
@@ -958,9 +939,7 @@
   Result* result = static_cast<Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetBufferParameteriv cmd;
-  cmd.Init(GL_ARRAY_BUFFER,
-           GL_BUFFER_SIZE,
-           shared_memory_id_,
+  cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_BUFFER_SIZE),
@@ -975,9 +954,7 @@
       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetBufferParameteriv cmd;
-  cmd.Init(GL_RENDERBUFFER,
-           GL_BUFFER_SIZE,
-           shared_memory_id_,
+  cmd.Init(GL_RENDERBUFFER, GL_BUFFER_SIZE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -991,9 +968,7 @@
       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetBufferParameteriv cmd;
-  cmd.Init(GL_ARRAY_BUFFER,
-           GL_PIXEL_PACK_BUFFER,
-           shared_memory_id_,
+  cmd.Init(GL_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1019,9 +994,7 @@
       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetBufferParameteriv cmd;
-  cmd.Init(GL_ARRAY_BUFFER,
-           GL_BUFFER_SIZE,
-           shared_memory_id_,
+  cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1111,16 +1084,12 @@
   Result* result = static_cast<Result*>(shared_memory_address_);
   EXPECT_CALL(*gl_,
               GetFramebufferAttachmentParameterivEXT(
-                  GL_FRAMEBUFFER,
-                  GL_COLOR_ATTACHMENT0,
-                  GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-                  result->GetData()));
+                  GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                  GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, result->GetData()));
   result->size = 0;
   cmds::GetFramebufferAttachmentParameteriv cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-           shared_memory_id_,
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
@@ -1138,10 +1107,8 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetFramebufferAttachmentParameteriv cmd;
-  cmd.Init(GL_DRAW_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-           shared_memory_id_,
+  cmd.Init(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1157,10 +1124,8 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetFramebufferAttachmentParameteriv cmd;
-  cmd.Init(GL_READ_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-           shared_memory_id_,
+  cmd.Init(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1176,11 +1141,8 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetFramebufferAttachmentParameteriv cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-           kInvalidSharedMemoryId,
-           0);
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, kInvalidSharedMemoryId, 0);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
 }
@@ -1194,10 +1156,8 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetFramebufferAttachmentParameteriv cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_COLOR_ATTACHMENT0,
-           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-           shared_memory_id_,
+  cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+           GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1264,9 +1224,7 @@
   Result* result = static_cast<Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetProgramiv cmd;
-  cmd.Init(client_program_id_,
-           GL_DELETE_STATUS,
-           shared_memory_id_,
+  cmd.Init(client_program_id_, GL_DELETE_STATUS, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DELETE_STATUS),
@@ -1293,9 +1251,7 @@
       static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetProgramiv cmd;
-  cmd.Init(client_program_id_,
-           GL_DELETE_STATUS,
-           shared_memory_id_,
+  cmd.Init(client_program_id_, GL_DELETE_STATUS, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1334,14 +1290,11 @@
   typedef cmds::GetRenderbufferParameteriv::Result Result;
   Result* result = static_cast<Result*>(shared_memory_address_);
   EXPECT_CALL(
-      *gl_,
-      GetRenderbufferParameterivEXT(
-          GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData()));
+      *gl_, GetRenderbufferParameterivEXT(
+                GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData()));
   result->size = 0;
   cmds::GetRenderbufferParameteriv cmd;
-  cmd.Init(GL_RENDERBUFFER,
-           GL_RENDERBUFFER_RED_SIZE,
-           shared_memory_id_,
+  cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
@@ -1358,9 +1311,7 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetRenderbufferParameteriv cmd;
-  cmd.Init(GL_FRAMEBUFFER,
-           GL_RENDERBUFFER_RED_SIZE,
-           shared_memory_id_,
+  cmd.Init(GL_FRAMEBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1375,8 +1326,8 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetRenderbufferParameteriv cmd;
-  cmd.Init(
-      GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId, 0);
+  cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId,
+           0);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
 }
@@ -1389,9 +1340,7 @@
           shared_memory_address_);
   result->size = 0;
   cmds::GetRenderbufferParameteriv cmd;
-  cmd.Init(GL_RENDERBUFFER,
-           GL_RENDERBUFFER_RED_SIZE,
-           shared_memory_id_,
+  cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1409,9 +1358,7 @@
               GetShaderiv(kServiceShaderId, GL_SHADER_TYPE, result->GetData()));
   result->size = 0;
   cmds::GetShaderiv cmd;
-  cmd.Init(client_shader_id_,
-           GL_SHADER_TYPE,
-           shared_memory_id_,
+  cmd.Init(client_shader_id_, GL_SHADER_TYPE, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_SHADER_TYPE),
@@ -1438,9 +1385,7 @@
       static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetShaderiv cmd;
-  cmd.Init(client_shader_id_,
-           GL_SHADER_TYPE,
-           shared_memory_id_,
+  cmd.Init(client_shader_id_, GL_SHADER_TYPE, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1459,14 +1404,11 @@
   SpecializedSetup<cmds::GetTexParameterfv, 0>(true);
   typedef cmds::GetTexParameterfv::Result Result;
   Result* result = static_cast<Result*>(shared_memory_address_);
-  EXPECT_CALL(*gl_,
-              GetTexParameterfv(
-                  GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData()));
+  EXPECT_CALL(*gl_, GetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
+                                      result->GetData()));
   result->size = 0;
   cmds::GetTexParameterfv cmd;
-  cmd.Init(GL_TEXTURE_2D,
-           GL_TEXTURE_MAG_FILTER,
-           shared_memory_id_,
+  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(
@@ -1482,9 +1424,7 @@
       static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetTexParameterfv cmd;
-  cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP,
-           GL_TEXTURE_MAG_FILTER,
-           shared_memory_id_,
+  cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1498,9 +1438,7 @@
       static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetTexParameterfv cmd;
-  cmd.Init(GL_TEXTURE_2D,
-           GL_GENERATE_MIPMAP,
-           shared_memory_id_,
+  cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1526,9 +1464,7 @@
       static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetTexParameterfv cmd;
-  cmd.Init(GL_TEXTURE_2D,
-           GL_TEXTURE_MAG_FILTER,
-           shared_memory_id_,
+  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1542,14 +1478,11 @@
   SpecializedSetup<cmds::GetTexParameteriv, 0>(true);
   typedef cmds::GetTexParameteriv::Result Result;
   Result* result = static_cast<Result*>(shared_memory_address_);
-  EXPECT_CALL(*gl_,
-              GetTexParameteriv(
-                  GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData()));
+  EXPECT_CALL(*gl_, GetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
+                                      result->GetData()));
   result->size = 0;
   cmds::GetTexParameteriv cmd;
-  cmd.Init(GL_TEXTURE_2D,
-           GL_TEXTURE_MAG_FILTER,
-           shared_memory_id_,
+  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(
@@ -1565,9 +1498,7 @@
       static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetTexParameteriv cmd;
-  cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP,
-           GL_TEXTURE_MAG_FILTER,
-           shared_memory_id_,
+  cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1581,9 +1512,7 @@
       static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetTexParameteriv cmd;
-  cmd.Init(GL_TEXTURE_2D,
-           GL_GENERATE_MIPMAP,
-           shared_memory_id_,
+  cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1609,9 +1538,7 @@
       static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetTexParameteriv cmd;
-  cmd.Init(GL_TEXTURE_2D,
-           GL_TEXTURE_MAG_FILTER,
-           shared_memory_id_,
+  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1628,9 +1555,7 @@
   Result* result = static_cast<Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetVertexAttribfv cmd;
-  cmd.Init(1,
-           GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
-           shared_memory_id_,
+  cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
@@ -1658,9 +1583,7 @@
       static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetVertexAttribfv cmd;
-  cmd.Init(1,
-           GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
-           shared_memory_id_,
+  cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1672,9 +1595,7 @@
   Result* result = static_cast<Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetVertexAttribiv cmd;
-  cmd.Init(1,
-           GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
-           shared_memory_id_,
+  cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
            shared_memory_offset_);
   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
@@ -1702,9 +1623,7 @@
       static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_);
   result->size = 0;
   cmds::GetVertexAttribiv cmd;
-  cmd.Init(1,
-           GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
-           shared_memory_id_,
+  cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
            kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
   EXPECT_EQ(0u, result->size);
@@ -1792,11 +1711,11 @@
 TEST_P(GLES2DecoderTest1, IsFramebufferInvalidArgsBadSharedMemoryId) {
   SpecializedSetup<cmds::IsFramebuffer, 0>(false);
   cmds::IsFramebuffer cmd;
-  cmd.Init(
-      client_framebuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
+  cmd.Init(client_framebuffer_id_, kInvalidSharedMemoryId,
+           shared_memory_offset_);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
-  cmd.Init(
-      client_framebuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
+  cmd.Init(client_framebuffer_id_, shared_memory_id_,
+           kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
 }
 
@@ -1828,11 +1747,11 @@
 TEST_P(GLES2DecoderTest1, IsRenderbufferInvalidArgsBadSharedMemoryId) {
   SpecializedSetup<cmds::IsRenderbuffer, 0>(false);
   cmds::IsRenderbuffer cmd;
-  cmd.Init(
-      client_renderbuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
+  cmd.Init(client_renderbuffer_id_, kInvalidSharedMemoryId,
+           shared_memory_offset_);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
-  cmd.Init(
-      client_renderbuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
+  cmd.Init(client_renderbuffer_id_, shared_memory_id_,
+           kInvalidSharedMemoryOffset);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
 }
 
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
index 95c2027..b29b243 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
@@ -142,8 +142,7 @@
   cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
   EXPECT_CALL(
       *gl_,
-      TexParameterf(GL_TEXTURE_2D,
-                    GL_TEXTURE_MAG_FILTER,
+      TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
                     *reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
@@ -233,11 +232,9 @@
       GL_NEAREST,
   };
   cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
-  EXPECT_CALL(
-      *gl_,
-      TexParameteri(GL_TEXTURE_2D,
-                    GL_TEXTURE_MAG_FILTER,
-                    *reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_, TexParameteri(
+                        GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
+                        *reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
 }
@@ -448,10 +445,9 @@
 TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
   cmds::UniformMatrix2fvImmediate& cmd =
       *GetImmediateAs<cmds::UniformMatrix2fvImmediate>();
-  EXPECT_CALL(
-      *gl_,
-      UniformMatrix2fv(
-          1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_,
+              UniformMatrix2fv(1, 2, false, reinterpret_cast<GLfloat*>(
+                                                ImmediateDataAddress(&cmd))));
   SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(true);
   GLfloat temp[4 * 2] = {
       0,
@@ -464,10 +460,9 @@
 TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
   cmds::UniformMatrix3fvImmediate& cmd =
       *GetImmediateAs<cmds::UniformMatrix3fvImmediate>();
-  EXPECT_CALL(
-      *gl_,
-      UniformMatrix3fv(
-          1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_,
+              UniformMatrix3fv(1, 2, false, reinterpret_cast<GLfloat*>(
+                                                ImmediateDataAddress(&cmd))));
   SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(true);
   GLfloat temp[9 * 2] = {
       0,
@@ -480,10 +475,9 @@
 TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
   cmds::UniformMatrix4fvImmediate& cmd =
       *GetImmediateAs<cmds::UniformMatrix4fvImmediate>();
-  EXPECT_CALL(
-      *gl_,
-      UniformMatrix4fv(
-          1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_,
+              UniformMatrix4fv(1, 2, false, reinterpret_cast<GLfloat*>(
+                                                ImmediateDataAddress(&cmd))));
   SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(true);
   GLfloat temp[16 * 2] = {
       0,
@@ -537,9 +531,8 @@
       0,
   };
   cmd.Init(1, &temp[0]);
-  EXPECT_CALL(*gl_,
-              VertexAttrib1fv(
-                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_, VertexAttrib1fv(1, reinterpret_cast<GLfloat*>(
+                                           ImmediateDataAddress(&cmd))));
   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
 }
@@ -561,9 +554,8 @@
       0,
   };
   cmd.Init(1, &temp[0]);
-  EXPECT_CALL(*gl_,
-              VertexAttrib2fv(
-                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_, VertexAttrib2fv(1, reinterpret_cast<GLfloat*>(
+                                           ImmediateDataAddress(&cmd))));
   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
 }
@@ -585,9 +577,8 @@
       0,
   };
   cmd.Init(1, &temp[0]);
-  EXPECT_CALL(*gl_,
-              VertexAttrib3fv(
-                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_, VertexAttrib3fv(1, reinterpret_cast<GLfloat*>(
+                                           ImmediateDataAddress(&cmd))));
   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
 }
@@ -609,9 +600,8 @@
       0,
   };
   cmd.Init(1, &temp[0]);
-  EXPECT_CALL(*gl_,
-              VertexAttrib4fv(
-                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
+  EXPECT_CALL(*gl_, VertexAttrib4fv(1, reinterpret_cast<GLfloat*>(
+                                           ImmediateDataAddress(&cmd))));
   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
   EXPECT_EQ(GL_NO_ERROR, GetGLError());
 }
diff --git a/gpu/command_buffer/service/gpu_scheduler.cc b/gpu/command_buffer/service/gpu_scheduler.cc
index 015d808..058a546 100644
--- a/gpu/command_buffer/service/gpu_scheduler.cc
+++ b/gpu/command_buffer/service/gpu_scheduler.cc
@@ -51,11 +51,11 @@
 
   // If there is no parser, exit.
   if (!parser_.get()) {
-    DCHECK_EQ(state.get_offset, state.put_offset);
+    DCHECK_EQ(state.get_offset, command_buffer_->GetPutOffset());
     return;
   }
 
-  parser_->set_put(state.put_offset);
+  parser_->set_put(command_buffer_->GetPutOffset());
   if (state.error != error::kNoError)
     return;
 
diff --git a/gpu/command_buffer/service/gpu_scheduler_unittest.cc b/gpu/command_buffer/service/gpu_scheduler_unittest.cc
index d8233ec..c1c0d1c 100644
--- a/gpu/command_buffer/service/gpu_scheduler_unittest.cc
+++ b/gpu/command_buffer/service/gpu_scheduler_unittest.cc
@@ -26,7 +26,6 @@
 namespace gpu {
 
 const size_t kRingBufferSize = 1024;
-const size_t kRingBufferEntries = kRingBufferSize / sizeof(CommandBufferEntry);
 
 class GpuSchedulerTest : public testing::Test {
  protected:
@@ -43,9 +42,10 @@
     command_buffer_.reset(new MockCommandBuffer);
 
     CommandBuffer::State default_state;
-    default_state.num_entries = kRingBufferEntries;
     ON_CALL(*command_buffer_.get(), GetLastState())
         .WillByDefault(Return(default_state));
+    ON_CALL(*command_buffer_.get(), GetPutOffset())
+        .WillByDefault(Return(0));
 
     decoder_.reset(new gles2::MockGLES2Decoder());
     // Install FakeDoCommands handler so we can use individual DoCommand()
@@ -86,7 +86,6 @@
 TEST_F(GpuSchedulerTest, SchedulerDoesNothingIfRingBufferIsEmpty) {
   CommandBuffer::State state;
 
-  state.put_offset = 0;
   EXPECT_CALL(*command_buffer_, GetLastState())
     .WillRepeatedly(Return(state));
 
@@ -122,9 +121,10 @@
 
   CommandBuffer::State state;
 
-  state.put_offset = 2;
   EXPECT_CALL(*command_buffer_, GetLastState())
     .WillRepeatedly(Return(state));
+  EXPECT_CALL(*command_buffer_, GetPutOffset())
+    .WillRepeatedly(Return(2));
   EXPECT_CALL(*command_buffer_, SetGetOffset(2));
 
   EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0]))
@@ -146,9 +146,10 @@
 
   CommandBuffer::State state;
 
-  state.put_offset = 3;
   EXPECT_CALL(*command_buffer_, GetLastState())
     .WillRepeatedly(Return(state));
+  EXPECT_CALL(*command_buffer_, GetPutOffset())
+    .WillRepeatedly(Return(3));
 
   EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0]))
     .WillOnce(Return(error::kNoError));
@@ -167,9 +168,10 @@
 
   CommandBuffer::State state;
 
-  state.put_offset = 1;
   EXPECT_CALL(*command_buffer_, GetLastState())
     .WillRepeatedly(Return(state));
+  EXPECT_CALL(*command_buffer_, GetPutOffset())
+    .WillRepeatedly(Return(1));
 
   EXPECT_CALL(*decoder_, DoCommand(7, 0, &buffer_[0]))
     .WillOnce(Return(
diff --git a/gpu/ipc/gpu_command_buffer_traits.cc b/gpu/ipc/gpu_command_buffer_traits.cc
index db482a9..46395fb 100644
--- a/gpu/ipc/gpu_command_buffer_traits.cc
+++ b/gpu/ipc/gpu_command_buffer_traits.cc
@@ -9,9 +9,7 @@
 
 void ParamTraits<gpu::CommandBuffer::State> ::Write(Message* m,
                                                     const param_type& p) {
-  WriteParam(m, p.num_entries);
   WriteParam(m, p.get_offset);
-  WriteParam(m, p.put_offset);
   WriteParam(m, p.token);
   WriteParam(m, static_cast<int32>(p.error));
   WriteParam(m, p.generation);
@@ -21,9 +19,7 @@
                                                    PickleIterator* iter,
                                                    param_type* p) {
   int32 temp;
-  if (ReadParam(m, iter, &p->num_entries) &&
-      ReadParam(m, iter, &p->get_offset) &&
-      ReadParam(m, iter, &p->put_offset) &&
+  if (ReadParam(m, iter, &p->get_offset) &&
       ReadParam(m, iter, &p->token) &&
       ReadParam(m, iter, &temp) &&
       ReadParam(m, iter, &p->generation)) {
diff --git a/mojo/services/gles2/command_buffer_type_conversions.cc b/mojo/services/gles2/command_buffer_type_conversions.cc
index a279f15..edb7093 100644
--- a/mojo/services/gles2/command_buffer_type_conversions.cc
+++ b/mojo/services/gles2/command_buffer_type_conversions.cc
@@ -12,9 +12,7 @@
 TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State>::Convert(
     const gpu::CommandBuffer::State& input) {
   CommandBufferStatePtr result(CommandBufferState::New());
-  result->num_entries = input.num_entries;
   result->get_offset = input.get_offset;
-  result->put_offset = input.put_offset;
   result->token = input.token;
   result->error = input.error;
   result->context_lost_reason = input.context_lost_reason;
@@ -26,9 +24,7 @@
 TypeConverter<gpu::CommandBuffer::State, CommandBufferStatePtr>::Convert(
     const CommandBufferStatePtr& input) {
   gpu::CommandBuffer::State state;
-  state.num_entries = input->num_entries;
   state.get_offset = input->get_offset;
-  state.put_offset = input->put_offset;
   state.token = input->token;
   state.error = static_cast<gpu::error::Error>(input->error);
   state.context_lost_reason =
diff --git a/mojo/tools/roll/cc_strip_video.patch b/mojo/tools/roll/cc_strip_video.patch
index 2bd6fb8..07c6fae 100644
--- a/mojo/tools/roll/cc_strip_video.patch
+++ b/mojo/tools/roll/cc_strip_video.patch
@@ -1,5 +1,5 @@
 diff --git a/cc/BUILD.gn b/cc/BUILD.gn
-index 24c5833..8cb8e8a 100644
+index 9b417f0..f753895 100644
 --- a/cc/BUILD.gn
 +++ b/cc/BUILD.gn
 @@ -208,13 +208,6 @@ component("cc") {
@@ -16,7 +16,7 @@
      "output/begin_frame_args.cc",
      "output/begin_frame_args.h",
      "output/bsp_tree.cc",
-@@ -426,8 +419,6 @@ component("cc") {
+@@ -427,8 +420,6 @@ component("cc") {
      "resources/ui_resource_client.h",
      "resources/ui_resource_request.cc",
      "resources/ui_resource_request.h",
@@ -25,7 +25,7 @@
      "resources/zero_copy_raster_worker_pool.cc",
      "resources/zero_copy_raster_worker_pool.h",
      "scheduler/begin_frame_source.cc",
-@@ -489,7 +480,6 @@ component("cc") {
+@@ -490,7 +481,6 @@ component("cc") {
      "//gpu",
      "//gpu/command_buffer/client:gles2_interface",
      "//gpu/command_buffer/client:gpu_memory_buffer_manager",
@@ -33,7 +33,7 @@
      "//ui/events:events_base",
      "//ui/gfx",
      "//ui/gfx/geometry",
-@@ -558,8 +548,6 @@ source_set("test_support") {
+@@ -559,8 +549,6 @@ source_set("test_support") {
      "test/fake_tile_manager_client.h",
      "test/fake_ui_resource_layer_tree_host_impl.cc",
      "test/fake_ui_resource_layer_tree_host_impl.h",
@@ -42,7 +42,7 @@
      "test/geometry_test_utils.cc",
      "test/geometry_test_utils.h",
      "test/test_in_process_context_provider.cc",
-@@ -707,7 +695,6 @@ test("cc_unittests") {
+@@ -713,7 +701,6 @@ test("cc_unittests") {
      "layers/tiled_layer_unittest.cc",
      "layers/ui_resource_layer_impl_unittest.cc",
      "layers/ui_resource_layer_unittest.cc",
@@ -50,7 +50,7 @@
      "output/begin_frame_args_unittest.cc",
      "output/delegating_renderer_unittest.cc",
      "output/filter_operations_unittest.cc",
-@@ -737,7 +724,6 @@ test("cc_unittests") {
+@@ -743,7 +730,6 @@ test("cc_unittests") {
      "resources/texture_uploader_unittest.cc",
      "resources/tile_manager_unittest.cc",
      "resources/tile_priority_unittest.cc",
@@ -58,7 +58,7 @@
      "scheduler/begin_frame_source_unittest.cc",
      "scheduler/delay_based_time_source_unittest.cc",
      "scheduler/scheduler_state_machine_unittest.cc",
-@@ -765,7 +751,6 @@ test("cc_unittests") {
+@@ -772,7 +758,6 @@ test("cc_unittests") {
      "trees/layer_tree_host_unittest_picture.cc",
      "trees/layer_tree_host_unittest_proxy.cc",
      "trees/layer_tree_host_unittest_scroll.cc",
@@ -66,7 +66,7 @@
      "trees/layer_tree_impl_unittest.cc",
      "trees/occlusion_tracker_unittest.cc",
      "trees/occlusion_unittest.cc",
-@@ -792,7 +777,6 @@ test("cc_unittests") {
+@@ -799,7 +784,6 @@ test("cc_unittests") {
      "//gpu:test_support",
      "//gpu/command_buffer/client:gles2_interface",
      "//gpu/command_buffer/common:gles2_utils",
@@ -74,7 +74,7 @@
      "//testing/gmock",
      "//testing/gtest",
      "//ui/events:events_base",
-@@ -824,7 +808,6 @@ test("cc_perftests") {
+@@ -831,7 +815,6 @@ test("cc_perftests") {
      "//gpu",
      "//gpu:test_support",
      "//gpu/command_buffer/common:gles2_utils",
@@ -253,7 +253,7 @@
 -
 -}  // namespace cc
 diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
-index a302f7e..b93ddcf 100644
+index a472475..4eb1324 100644
 --- a/cc/output/gl_renderer.cc
 +++ b/cc/output/gl_renderer.cc
 @@ -13,7 +13,6 @@
@@ -636,7 +636,7 @@
  
  namespace cc {
 diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
-index fb23ba6..8e7fa0f 100644
+index 9395639..5d2d939 100644
 --- a/cc/trees/layer_tree_host_impl_unittest.cc
 +++ b/cc/trees/layer_tree_host_impl_unittest.cc
 @@ -27,7 +27,6 @@
@@ -647,15 +647,15 @@
  #include "cc/output/begin_frame_args.h"
  #include "cc/output/compositor_frame_ack.h"
  #include "cc/output/compositor_frame_metadata.h"
-@@ -48,7 +47,6 @@
+@@ -47,7 +46,6 @@
+ #include "cc/test/fake_picture_layer_impl.h"
  #include "cc/test/fake_picture_pile_impl.h"
  #include "cc/test/fake_proxy.h"
- #include "cc/test/fake_rendering_stats_instrumentation.h"
 -#include "cc/test/fake_video_frame_provider.h"
  #include "cc/test/geometry_test_utils.h"
  #include "cc/test/layer_test_common.h"
  #include "cc/test/render_pass_test_common.h"
-@@ -57,7 +55,6 @@
+@@ -56,7 +54,6 @@
  #include "cc/test/test_web_graphics_context_3d.h"
  #include "cc/trees/layer_tree_impl.h"
  #include "cc/trees/single_thread_proxy.h"
@@ -663,7 +663,7 @@
  #include "testing/gmock/include/gmock/gmock.h"
  #include "testing/gtest/include/gtest/gtest.h"
  #include "third_party/skia/include/core/SkMallocPixelRef.h"
-@@ -71,7 +68,6 @@ using ::testing::Return;
+@@ -70,7 +67,6 @@ using ::testing::Return;
  using ::testing::AnyNumber;
  using ::testing::AtLeast;
  using ::testing::_;
@@ -671,7 +671,7 @@
  
  namespace cc {
  namespace {
-@@ -96,7 +92,6 @@ class LayerTreeHostImplTest : public testing::Test,
+@@ -95,7 +91,6 @@ class LayerTreeHostImplTest : public testing::Test,
          reduce_memory_result_(true),
          current_limit_bytes_(0),
          current_priority_cutoff_value_(0) {
@@ -679,7 +679,7 @@
    }
  
    LayerTreeSettings DefaultSettings() {
-@@ -5090,18 +5085,6 @@ TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
+@@ -5066,18 +5061,6 @@ TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
        LayerImpl::Create(host_impl_->active_tree(), 1);
    root_layer->SetBounds(gfx::Size(10, 10));
  
@@ -698,7 +698,7 @@
    scoped_ptr<IOSurfaceLayerImpl> io_surface_layer =
        IOSurfaceLayerImpl::Create(host_impl_->active_tree(), 5);
    io_surface_layer->SetBounds(gfx::Size(10, 10));
-@@ -6165,16 +6148,6 @@ TEST_F(LayerTreeHostImplTest,
+@@ -6139,16 +6122,6 @@ TEST_F(LayerTreeHostImplTest,
    scoped_ptr<SolidColorLayerImpl> root_layer =
        SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
  
@@ -716,7 +716,7 @@
    EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
-index 8d554dc..d15c6a3 100644
+index aedd0d9..0859d86 100644
 --- a/cc/trees/layer_tree_host_unittest.cc
 +++ b/cc/trees/layer_tree_host_unittest.cc
 @@ -18,7 +18,6 @@
diff --git a/mojo/tools/roll/skia_build.patch b/mojo/tools/roll/skia_build.patch
index 8fab3a0..dcceab3 100644
--- a/mojo/tools/roll/skia_build.patch
+++ b/mojo/tools/roll/skia_build.patch
@@ -1,10 +1,10 @@
 diff --git a/skia/BUILD.gn b/skia/BUILD.gn
-index 356c6ae..042d03d 100644
+index 1944183..a57b6a1 100644
 --- a/skia/BUILD.gn
 +++ b/skia/BUILD.gn
 @@ -11,15 +11,6 @@ if (cpu_arch == "arm") {
  skia_support_gpu = !is_ios
- skia_support_pdf = !is_ios && printing_mode != 0
+ skia_support_pdf = !is_ios && (enable_basic_printing || enable_print_preview)
  
 -# The list of Skia defines that are to be set for blink.
 -gypi_blink_skia_defines = exec_script(
@@ -18,7 +18,7 @@
  # The list of Skia defines that are to be set for chromium.
  gypi_skia_defines = exec_script(
      "//build/gypi_to_gn.py",
-@@ -107,8 +98,7 @@ config("skia_config") {
+@@ -108,8 +99,7 @@ config("skia_config") {
      "//third_party/skia/src/lazy",
    ]
  
diff --git a/net/base/filename_util_internal.cc b/net/base/filename_util_internal.cc
index cda7f62..be9139d 100644
--- a/net/base/filename_util_internal.cc
+++ b/net/base/filename_util_internal.cc
@@ -6,7 +6,6 @@
 
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
-#include "base/path_service.h"
 #include "base/strings/string_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/net/base/keygen_handler_win.cc b/net/base/keygen_handler_win.cc
index ffa3b2e..44365fa 100644
--- a/net/base/keygen_handler_win.cc
+++ b/net/base/keygen_handler_win.cc
@@ -65,7 +65,7 @@
 bool GetSignedPublicKeyAndChallenge(HCRYPTPROV prov,
                                     const std::string& challenge,
                                     std::string* output) {
-  std::wstring wide_challenge = base::ASCIIToWide(challenge);
+  base::string16 challenge16 = base::ASCIIToUTF16(challenge);
   std::vector<BYTE> spki;
 
   if (!GetSubjectPublicKeyInfo(prov, &spki))
@@ -79,7 +79,7 @@
   pkac.dwVersion = CERT_KEYGEN_REQUEST_V1;
   pkac.SubjectPublicKeyInfo =
       *reinterpret_cast<PCERT_PUBLIC_KEY_INFO>(&spki[0]);
-  pkac.pwszChallengeString = const_cast<wchar_t*>(wide_challenge.c_str());
+  pkac.pwszChallengeString = const_cast<base::char16*>(challenge16.c_str());
 
   CRYPT_ALGORITHM_IDENTIFIER sig_alg;
   memset(&sig_alg, 0, sizeof(sig_alg));
diff --git a/net/base/network_delegate.cc b/net/base/network_delegate.cc
index 1c315ec..9cad50a 100644
--- a/net/base/network_delegate.cc
+++ b/net/base/network_delegate.cc
@@ -5,6 +5,7 @@
 #include "net/base/network_delegate.h"
 
 #include "base/logging.h"
+#include "base/profiler/scoped_tracker.h"
 #include "net/base/load_flags.h"
 #include "net/base/net_errors.h"
 #include "net/proxy/proxy_info.h"
@@ -18,6 +19,10 @@
   DCHECK(CalledOnValidThread());
   DCHECK(request);
   DCHECK(!callback.is_null());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnBeforeURLRequest"));
   return OnBeforeURLRequest(request, callback, new_url);
 }
 
@@ -28,6 +33,10 @@
     ProxyInfo* result) {
   DCHECK(CalledOnValidThread());
   DCHECK(result);
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnResolveProxy"));
   OnResolveProxy(url, load_flags, proxy_service, result);
 }
 
@@ -35,6 +44,10 @@
     const ProxyServer& bad_proxy,
     int net_error) {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnProxyFallback"));
   OnProxyFallback(bad_proxy, net_error);
 }
 
@@ -44,6 +57,10 @@
   DCHECK(CalledOnValidThread());
   DCHECK(headers);
   DCHECK(!callback.is_null());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnBeforeSendHeaders"));
   return OnBeforeSendHeaders(request, callback, headers);
 }
 
@@ -53,12 +70,20 @@
     HttpRequestHeaders* headers) {
   DCHECK(CalledOnValidThread());
   DCHECK(headers);
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnBeforeSendProxyHeaders"));
   OnBeforeSendProxyHeaders(request, proxy_info, headers);
 }
 
 void NetworkDelegate::NotifySendHeaders(URLRequest* request,
                                         const HttpRequestHeaders& headers) {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnSendHeaders"));
   OnSendHeaders(request, headers);
 }
 
@@ -71,6 +96,10 @@
   DCHECK(CalledOnValidThread());
   DCHECK(original_response_headers);
   DCHECK(!callback.is_null());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnHeadersReceived"));
   return OnHeadersReceived(request,
                            callback,
                            original_response_headers,
@@ -81,12 +110,20 @@
 void NetworkDelegate::NotifyResponseStarted(URLRequest* request) {
   DCHECK(CalledOnValidThread());
   DCHECK(request);
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnResponseStarted"));
   OnResponseStarted(request);
 }
 
 void NetworkDelegate::NotifyRawBytesRead(const URLRequest& request,
                                          int bytes_read) {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnRawBytesRead"));
   OnRawBytesRead(request, bytes_read);
 }
 
@@ -94,24 +131,39 @@
                                            const GURL& new_location) {
   DCHECK(CalledOnValidThread());
   DCHECK(request);
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnBeforeRedirect"));
   OnBeforeRedirect(request, new_location);
 }
 
 void NetworkDelegate::NotifyCompleted(URLRequest* request, bool started) {
   DCHECK(CalledOnValidThread());
   DCHECK(request);
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION("423948 NetworkDelegate::OnCompleted"));
   OnCompleted(request, started);
 }
 
 void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) {
   DCHECK(CalledOnValidThread());
   DCHECK(request);
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnURLRequestDestroyed"));
   OnURLRequestDestroyed(request);
 }
 
 void NetworkDelegate::NotifyPACScriptError(int line_number,
                                            const base::string16& error) {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnPACScriptError"));
   OnPACScriptError(line_number, error);
 }
 
@@ -130,6 +182,10 @@
   DCHECK(CalledOnValidThread());
   DCHECK(socket);
   DCHECK(!callback.is_null());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnBeforeSocketStreamConnect"));
   return OnBeforeSocketStreamConnect(socket, callback);
 }
 
@@ -137,6 +193,10 @@
                                     const CookieList& cookie_list) {
   DCHECK(CalledOnValidThread());
   DCHECK(!(request.load_flags() & net::LOAD_DO_NOT_SEND_COOKIES));
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnCanGetCookies"));
   return OnCanGetCookies(request, cookie_list);
 }
 
@@ -145,17 +205,29 @@
                                    CookieOptions* options) {
   DCHECK(CalledOnValidThread());
   DCHECK(!(request.load_flags() & net::LOAD_DO_NOT_SAVE_COOKIES));
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnCanSetCookie"));
   return OnCanSetCookie(request, cookie_line, options);
 }
 
 bool NetworkDelegate::CanAccessFile(const URLRequest& request,
                                     const base::FilePath& path) const {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnCanAccessFile"));
   return OnCanAccessFile(request, path);
 }
 
 bool NetworkDelegate::CanThrottleRequest(const URLRequest& request) const {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnCanThrottleRequest"));
   return OnCanThrottleRequest(request);
 }
 
@@ -163,6 +235,10 @@
     const GURL& url,
     const GURL& first_party_for_cookies) const {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnCanEnablePrivacyMode"));
   return OnCanEnablePrivacyMode(url, first_party_for_cookies);
 }
 
@@ -171,6 +247,10 @@
     const GURL& target_url,
     const GURL& referrer_url) const {
   DCHECK(CalledOnValidThread());
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 NetworkDelegate::OnCancelURLRequestWithPolicy..."));
   return OnCancelURLRequestWithPolicyViolatingReferrerHeader(
       request, target_url, referrer_url);
 }
diff --git a/net/base/sdch_manager.cc b/net/base/sdch_manager.cc
index 122f01f..1285ad9 100644
--- a/net/base/sdch_manager.cc
+++ b/net/base/sdch_manager.cc
@@ -11,6 +11,7 @@
 #include "base/strings/string_util.h"
 #include "crypto/sha2.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+#include "net/base/sdch_observer.h"
 #include "net/url_request/url_request_http_job.h"
 
 namespace {
@@ -51,12 +52,7 @@
 #endif
 
 // static
-#if defined(OS_IOS)
-// Workaround for http://crbug.com/418975; remove when fixed.
-bool SdchManager::g_sdch_enabled_ = false;
-#else
 bool SdchManager::g_sdch_enabled_ = true;
-#endif
 
 // static
 bool SdchManager::g_secure_scheme_supported_ = true;
@@ -246,13 +242,12 @@
 }
 
 //------------------------------------------------------------------------------
-SdchManager::SdchManager()
-    : fetches_count_for_testing_(0) {
-  DCHECK(CalledOnValidThread());
+SdchManager::SdchManager() {
+  DCHECK(thread_checker_.CalledOnValidThread());
 }
 
 SdchManager::~SdchManager() {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   while (!dictionaries_.empty()) {
     DictionaryMap::iterator it = dictionaries_.begin();
     dictionaries_.erase(it->first);
@@ -262,14 +257,14 @@
 void SdchManager::ClearData() {
   blacklisted_domains_.clear();
   allow_latency_experiment_.clear();
-  if (fetcher_.get())
-    fetcher_->Cancel();
 
   // Note that this may result in not having dictionaries we've advertised
   // for incoming responses.  The window is relatively small (as ClearData()
   // is not expected to be called frequently), so we rely on meta-refresh
   // to handle this case.
   dictionaries_.clear();
+
+  FOR_EACH_OBSERVER(SdchObserver, observers_, OnClearDictionaries(this));
 }
 
 // static
@@ -277,11 +272,6 @@
   UMA_HISTOGRAM_ENUMERATION("Sdch3.ProblemCodes_4", problem, MAX_PROBLEM_CODE);
 }
 
-void SdchManager::set_sdch_fetcher(scoped_ptr<SdchFetcher> fetcher) {
-  DCHECK(CalledOnValidThread());
-  fetcher_ = fetcher.Pass();
-}
-
 // static
 void SdchManager::EnableSdchSupport(bool enabled) {
   g_sdch_enabled_ = enabled;
@@ -352,7 +342,7 @@
 }
 
 bool SdchManager::IsInSupportedDomain(const GURL& url) {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   if (!g_sdch_enabled_ )
     return false;
 
@@ -382,18 +372,19 @@
   return false;
 }
 
-void SdchManager::FetchDictionary(const GURL& request_url,
+void SdchManager::OnGetDictionary(const GURL& request_url,
                                   const GURL& dictionary_url) {
-  DCHECK(CalledOnValidThread());
-  if (CanFetchDictionary(request_url, dictionary_url) && fetcher_.get()) {
-    ++fetches_count_for_testing_;
-    fetcher_->Schedule(dictionary_url);
-  }
+  if (!CanFetchDictionary(request_url, dictionary_url))
+    return;
+
+  FOR_EACH_OBSERVER(SdchObserver,
+                    observers_,
+                    OnGetDictionary(this, request_url, dictionary_url));
 }
 
 bool SdchManager::CanFetchDictionary(const GURL& referring_url,
                                      const GURL& dictionary_url) const {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   /* The user agent may retrieve a dictionary from the dictionary URL if all of
      the following are true:
        1 The dictionary URL host name matches the referrer URL host name and
@@ -402,7 +393,6 @@
            referrer URL host name
        3 The parent domain of the referrer URL host name is not a top level
            domain
-       4 The dictionary URL is not an HTTPS URL.
    */
   // Item (1) above implies item (2).  Spec should be updated.
   // I take "host name match" to be "is identical to"
@@ -430,7 +420,7 @@
     const std::string& server_hash,
     const GURL& referring_url,
     scoped_refptr<Dictionary>* dictionary) {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   *dictionary = NULL;
   DictionaryMap::iterator it = dictionaries_.find(server_hash);
   if (it == dictionaries_.end()) {
@@ -449,7 +439,7 @@
 // instances that can be used if/when a server specifies one.
 void SdchManager::GetAvailDictionaryList(const GURL& target_url,
                                          std::string* list) {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   int count = 0;
   for (DictionaryMap::iterator it = dictionaries_.begin();
        it != dictionaries_.end(); ++it) {
@@ -486,13 +476,13 @@
 // Methods for supporting latency experiments.
 
 bool SdchManager::AllowLatencyExperiment(const GURL& url) const {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   return allow_latency_experiment_.end() !=
       allow_latency_experiment_.find(url.host());
 }
 
 void SdchManager::SetAllowLatencyExperiment(const GURL& url, bool enable) {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   if (enable) {
     allow_latency_experiment_.insert(url.host());
     return;
@@ -504,9 +494,17 @@
   allow_latency_experiment_.erase(it);
 }
 
+void SdchManager::AddObserver(SdchObserver* observer) {
+  observers_.AddObserver(observer);
+}
+
+void SdchManager::RemoveObserver(SdchObserver* observer) {
+  observers_.RemoveObserver(observer);
+}
+
 void SdchManager::AddSdchDictionary(const std::string& dictionary_text,
     const GURL& dictionary_url) {
-  DCHECK(CalledOnValidThread());
+  DCHECK(thread_checker_.CalledOnValidThread());
   std::string client_hash;
   std::string server_hash;
   GenerateHash(dictionary_text, &client_hash, &server_hash);
diff --git a/net/base/sdch_manager.h b/net/base/sdch_manager.h
index b5f901b..ff157e5 100644
--- a/net/base/sdch_manager.h
+++ b/net/base/sdch_manager.h
@@ -2,21 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// Provides global database of differential decompression dictionaries for the
-// SDCH filter (processes sdch enconded content).
-
-// Exactly one instance of SdchManager is built, and all references are made
-// into that collection.
-//
-// The SdchManager maintains a collection of memory resident dictionaries. It
-// can find a dictionary (based on a server specification of a hash), store a
-// dictionary, and make judgements about what URLs can use, set, etc. a
-// dictionary.
-
-// These dictionaries are acquired over the net, and include a header
-// (containing metadata) as well as a VCDIFF dictionary (for use by a VCDIFF
-// module) to decompress data.
-
 #ifndef NET_BASE_SDCH_MANAGER_H_
 #define NET_BASE_SDCH_MANAGER_H_
 
@@ -27,53 +12,28 @@
 #include "base/gtest_prod_util.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
-#include "base/threading/non_thread_safe.h"
+#include "base/observer_list.h"
+#include "base/threading/thread_checker.h"
 #include "base/time/time.h"
 #include "net/base/net_export.h"
 #include "url/gurl.h"
 
 namespace net {
 
-//------------------------------------------------------------------------------
-// Create a public interface to help us load SDCH dictionaries.
-// The SdchManager class allows registration to support this interface.
-// A browser may register a fetcher that is used by the dictionary managers to
-// get data from a specified URL. This allows us to use very high level browser
-// functionality in this base (when the functionality can be provided).
-class NET_EXPORT SdchFetcher {
- public:
-  class NET_EXPORT Delegate {
-   public:
-    virtual ~Delegate() {}
+class SdchObserver;
 
-    // Called whenever the SdchFetcher has successfully retrieved a
-    // dictionary.  |dictionary_text| contains the body of the dictionary
-    // retrieved from |dictionary_url|.
-    virtual void AddSdchDictionary(const std::string& dictionary_text,
-                                   const GURL& dictionary_url) = 0;
-  };
+// Provides global database of differential decompression dictionaries for the
+// SDCH filter (processes sdch enconded content).
+//
+// The SdchManager maintains a collection of memory resident dictionaries. It
+// can find a dictionary (based on a server specification of a hash), store a
+// dictionary, and make judgements about what URLs can use, set, etc. a
+// dictionary.
 
-  SdchFetcher() {}
-  virtual ~SdchFetcher() {}
-
-  // The Schedule() method is called when there is a need to get a dictionary
-  // from a server. The callee is responsible for getting that dictionary_text,
-  // and then calling back to AddSdchDictionary() in the Delegate instance.
-  virtual void Schedule(const GURL& dictionary_url) = 0;
-
-  // The Cancel() method is called to cancel all pending dictionary fetches.
-  // This is used for implementation of ClearData() below.
-  virtual void Cancel() = 0;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(SdchFetcher);
-};
-
-//------------------------------------------------------------------------------
-
-class NET_EXPORT SdchManager
-    : public SdchFetcher::Delegate,
-      public NON_EXPORTED_BASE(base::NonThreadSafe) {
+// These dictionaries are acquired over the net, and include a header
+// (containing metadata) as well as a VCDIFF dictionary (for use by a VCDIFF
+// module) to decompress data.
+class NET_EXPORT SdchManager {
  public:
   // A list of errors that appeared and were either resolved, or used to turn
   // off sdch encoding.
@@ -252,7 +212,7 @@
   };
 
   SdchManager();
-  ~SdchManager() override;
+  ~SdchManager();
 
   // Clear data (for browser data removal).
   void ClearData();
@@ -260,9 +220,6 @@
   // Record stats on various errors.
   static void SdchErrorRecovery(ProblemCodes problem);
 
-  // Register a fetcher that this class can use to obtain dictionaries.
-  void set_sdch_fetcher(scoped_ptr<SdchFetcher> fetcher);
-
   // Enables or disables SDCH compression.
   static void EnableSdchSupport(bool enabled);
 
@@ -305,16 +262,9 @@
   // by 1 the number of times it will be reported as blacklisted.
   bool IsInSupportedDomain(const GURL& url);
 
-  // Schedule the URL fetching to load a dictionary. This will always return
-  // before the dictionary is actually loaded and added.
-  // After the implied task does completes, the dictionary will have been
-  // cached in memory.
-  void FetchDictionary(const GURL& request_url, const GURL& dictionary_url);
-
-  // Security test function used before initiating a FetchDictionary.
-  // Return true if fetch is legal.
-  bool CanFetchDictionary(const GURL& referring_url,
-                          const GURL& dictionary_url) const;
+  // Send out appropriate events notifying observers that a Get-Dictionary
+  // header has been seen.
+  void OnGetDictionary(const GURL& request_url, const GURL& dictionary_url);
 
   // Find the vcdiff dictionary (the body of the sdch dictionary that appears
   // after the meta-data headers like Domain:...) with the given |server_hash|
@@ -345,18 +295,16 @@
 
   void SetAllowLatencyExperiment(const GURL& url, bool enable);
 
-  int GetFetchesCountForTesting() const {
-    return fetches_count_for_testing_;
-  }
-
-  // Implementation of SdchFetcher::Delegate.
-
   // Add an SDCH dictionary to our list of availible
   // dictionaries. This addition will fail if addition is illegal
   // (data in the dictionary is not acceptable from the
   // dictionary_url; dictionary already added, etc.).
   void AddSdchDictionary(const std::string& dictionary_text,
-                         const GURL& dictionary_url) override;
+                         const GURL& dictionary_url);
+
+  // Registration for events generated by the SDCH subsystem.
+  void AddObserver(SdchObserver* observer);
+  void RemoveObserver(SdchObserver* observer);
 
  private:
   struct BlacklistInfo {
@@ -373,6 +321,12 @@
   typedef std::map<std::string, BlacklistInfo> DomainBlacklistInfo;
   typedef std::set<std::string> ExperimentSet;
 
+  // Determines whether a "Get-Dictionary" header is legal (dictionary
+  // url has appropriate relationship to referrer url) in the SDCH
+  // protocol.  Return true if fetch is legal.
+  bool CanFetchDictionary(const GURL& referring_url,
+                          const GURL& dictionary_url) const;
+
   // A map of dictionaries info indexed by the hash that the server provides.
   typedef std::map<std::string, scoped_refptr<Dictionary> > DictionaryMap;
 
@@ -388,9 +342,6 @@
                                   std::string* output);
   DictionaryMap dictionaries_;
 
-  // An instance that can fetch a dictionary given a URL.
-  scoped_ptr<SdchFetcher> fetcher_;
-
   // List domains where decode failures have required disabling sdch.
   DomainBlacklistInfo blacklisted_domains_;
 
@@ -398,7 +349,13 @@
   // round trip test has recently passed).
   ExperimentSet allow_latency_experiment_;
 
-  int fetches_count_for_testing_;
+  // Observers that want to be notified of SDCH events.
+  // Assert list is empty on destruction since if there is an observer
+  // that hasn't removed itself from the list, that observer probably
+  // has a reference to the SdchManager.
+  ObserverList<SdchObserver, true> observers_;
+
+  base::ThreadChecker thread_checker_;
 
   DISALLOW_COPY_AND_ASSIGN(SdchManager);
 };
diff --git a/net/base/sdch_manager_unittest.cc b/net/base/sdch_manager_unittest.cc
index 40b55c6..d986879 100644
--- a/net/base/sdch_manager_unittest.cc
+++ b/net/base/sdch_manager_unittest.cc
@@ -9,15 +9,13 @@
 #include "base/logging.h"
 #include "base/memory/scoped_ptr.h"
 #include "net/base/sdch_manager.h"
+#include "net/base/sdch_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
 
 namespace net {
 
 //------------------------------------------------------------------------------
-// Workaround for http://crbug.com/418975; remove when fixed.
-#if !defined(OS_IOS)
-
-//------------------------------------------------------------------------------
 // Provide sample data and compression results with a sample VCDIFF dictionary.
 // Note an SDCH dictionary has extra meta-data before the VCDIFF dictionary.
 static const char kTestVcdiffDictionary[] = "DictionaryFor"
@@ -25,6 +23,32 @@
 
 //------------------------------------------------------------------------------
 
+class MockSdchObserver : public SdchObserver {
+ public:
+  MockSdchObserver() : get_dictionary_notifications_(0) {}
+
+  const GURL& last_dictionary_request_url() {
+    return last_dictionary_request_url_;
+  }
+  const GURL& last_dictionary_url() { return last_dictionary_url_; }
+  int get_dictionary_notifications() { return get_dictionary_notifications_; }
+
+  // SdchObserver implementation
+  void OnGetDictionary(SdchManager* manager,
+                       const GURL& request_url,
+                       const GURL& dictionary_url) override {
+    ++get_dictionary_notifications_;
+    last_dictionary_request_url_ = request_url;
+    last_dictionary_url_ = dictionary_url;
+  }
+  void OnClearDictionaries(SdchManager* manager) override {}
+
+ private:
+  int get_dictionary_notifications_;
+  GURL last_dictionary_request_url_;
+  GURL last_dictionary_url_;
+};
+
 class SdchManagerTest : public testing::Test {
  protected:
   SdchManagerTest()
@@ -35,6 +59,8 @@
     default_https_support_ = sdch_manager_->secure_scheme_supported();
   }
 
+  virtual ~SdchManagerTest() {}
+
   SdchManager* sdch_manager() { return sdch_manager_.get(); }
 
   // Reset globals back to default state.
@@ -521,12 +547,7 @@
   GURL url("http://www.google.com");
   GURL secure_url("https://www.google.com");
 
-#if !defined(OS_IOS)
-  // Workaround for http://crbug.com/418975; remove when fixed.
   bool expect_https_support = true;
-#else
-  bool expect_https_support = false;
-#endif
 
   EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url));
   EXPECT_EQ(expect_https_support,
@@ -572,17 +593,23 @@
   EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(blacklist_url));
 }
 
-#else
+TEST_F(SdchManagerTest, GetDictionaryNotification) {
+  GURL test_request_gurl(GURL("http://www.example.com/data"));
+  GURL test_dictionary_gurl(GURL("http://www.example.com/dict"));
+  MockSdchObserver observer;
+  sdch_manager()->AddObserver(&observer);
 
-TEST(SdchManagerTest, SdchOffByDefault) {
-  GURL google_url("http://www.google.com");
-  SdchManager* sdch_manager(new SdchManager);
+  EXPECT_EQ(0, observer.get_dictionary_notifications());
+  sdch_manager()->OnGetDictionary(test_request_gurl, test_dictionary_gurl);
+  EXPECT_EQ(1, observer.get_dictionary_notifications());
+  EXPECT_EQ(test_request_gurl, observer.last_dictionary_request_url());
+  EXPECT_EQ(test_dictionary_gurl, observer.last_dictionary_url());
 
-  EXPECT_FALSE(sdch_manager->IsInSupportedDomain(google_url));
-  SdchManager::EnableSdchSupport(true);
-  EXPECT_TRUE(sdch_manager->IsInSupportedDomain(google_url));
+  sdch_manager()->RemoveObserver(&observer);
+  sdch_manager()->OnGetDictionary(test_request_gurl, test_dictionary_gurl);
+  EXPECT_EQ(1, observer.get_dictionary_notifications());
+  EXPECT_EQ(test_request_gurl, observer.last_dictionary_request_url());
+  EXPECT_EQ(test_dictionary_gurl, observer.last_dictionary_url());
 }
 
-#endif  // !defined(OS_IOS)
-
 }  // namespace net
diff --git a/net/base/sdch_observer.cc b/net/base/sdch_observer.cc
new file mode 100644
index 0000000..9bf44ad
--- /dev/null
+++ b/net/base/sdch_observer.cc
@@ -0,0 +1,14 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/base/sdch_observer.h"
+
+#include "base/logging.h"
+#include "net/base/sdch_manager.h"
+
+namespace net {
+
+SdchObserver::~SdchObserver() {
+}
+}
diff --git a/net/base/sdch_observer.h b/net/base/sdch_observer.h
new file mode 100644
index 0000000..2c5987d
--- /dev/null
+++ b/net/base/sdch_observer.h
@@ -0,0 +1,34 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_BASE_SDCH_OBSERVER_H_
+#define NET_BASE_SDCH_OBSERVER_H_
+
+#include "net/base/net_export.h"
+
+class GURL;
+
+namespace net {
+
+class SdchManager;
+
+// Observer interface for SDCH.  Observers can register with
+// the SdchManager to receive notifications of various SDCH events.
+class NET_EXPORT SdchObserver {
+ public:
+  virtual ~SdchObserver();
+
+  // Notification that SDCH has seen a "Get-Dictionary" header.
+  virtual void OnGetDictionary(SdchManager* manager,
+                               const GURL& request_url,
+                               const GURL& dictionary_url) = 0;
+
+  // Notification that SDCH has received a request to clear all
+  // its dictionaries.
+  virtual void OnClearDictionaries(SdchManager* manager) = 0;
+};
+
+}  // namespace net
+
+#endif  // NET_BASE_SDCH_MANAGER_H_
diff --git a/net/cert/cert_verify_proc_win.cc b/net/cert/cert_verify_proc_win.cc
index 60e2286..13a337b 100644
--- a/net/cert/cert_verify_proc_win.cc
+++ b/net/cert/cert_verify_proc_win.cc
@@ -741,7 +741,7 @@
   if (CertSubjectCommonNameHasNull(cert_handle))
     verify_result->cert_status |= CERT_STATUS_INVALID;
 
-  std::wstring wstr_hostname = base::ASCIIToWide(hostname);
+  base::string16 hostname16 = base::ASCIIToUTF16(hostname);
 
   SSL_EXTRA_CERT_CHAIN_POLICY_PARA extra_policy_para;
   memset(&extra_policy_para, 0, sizeof(extra_policy_para));
@@ -752,7 +752,7 @@
   extra_policy_para.fdwChecks =
       0x00001000;  // SECURITY_FLAG_IGNORE_CERT_CN_INVALID
   extra_policy_para.pwszServerName =
-      const_cast<wchar_t*>(wstr_hostname.c_str());
+      const_cast<base::char16*>(hostname16.c_str());
 
   CERT_CHAIN_POLICY_PARA policy_para;
   memset(&policy_para, 0, sizeof(policy_para));
diff --git a/net/cert/nss_cert_database_unittest.cc b/net/cert/nss_cert_database_unittest.cc
index c5f05b5..3c83d05 100644
--- a/net/cert/nss_cert_database_unittest.cc
+++ b/net/cert/nss_cert_database_unittest.cc
@@ -14,7 +14,6 @@
 #include "base/lazy_instance.h"
 #include "base/message_loop/message_loop.h"
 #include "base/message_loop/message_loop_proxy.h"
-#include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_util.h"
diff --git a/net/disk_cache/disk_cache_test_util.cc b/net/disk_cache/disk_cache_test_util.cc
index e3f8fba..69738d3 100644
--- a/net/disk_cache/disk_cache_test_util.cc
+++ b/net/disk_cache/disk_cache_test_util.cc
@@ -7,7 +7,6 @@
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
-#include "base/path_service.h"
 #include "base/thread_task_runner_handle.h"
 #include "net/base/net_errors.h"
 #include "net/disk_cache/blockfile/backend_impl.h"
diff --git a/net/disk_cache/simple/simple_index.cc b/net/disk_cache/simple/simple_index.cc
index ca4d58e..66d9f42 100644
--- a/net/disk_cache/simple/simple_index.cc
+++ b/net/disk_cache/simple/simple_index.cc
@@ -470,7 +470,7 @@
   last_write_to_disk_ = start;
 
   index_file_->WriteToDisk(entries_set_, cache_size_,
-                           start, app_on_background_);
+                           start, app_on_background_, base::Closure());
 }
 
 }  // namespace disk_cache
diff --git a/net/disk_cache/simple/simple_index_file.cc b/net/disk_cache/simple/simple_index_file.cc
index ac71330..95b2bae 100644
--- a/net/disk_cache/simple/simple_index_file.cc
+++ b/net/disk_cache/simple/simple_index_file.cc
@@ -278,18 +278,18 @@
 void SimpleIndexFile::WriteToDisk(const SimpleIndex::EntrySet& entry_set,
                                   uint64 cache_size,
                                   const base::TimeTicks& start,
-                                  bool app_on_background) {
+                                  bool app_on_background,
+                                  const base::Closure& callback) {
   IndexMetadata index_metadata(entry_set.size(), cache_size);
   scoped_ptr<Pickle> pickle = Serialize(index_metadata, entry_set);
-  cache_thread_->PostTask(FROM_HERE,
-                          base::Bind(&SimpleIndexFile::SyncWriteToDisk,
-                                     cache_type_,
-                                     cache_directory_,
-                                     index_file_,
-                                     temp_index_file_,
-                                     base::Passed(&pickle),
-                                     base::TimeTicks::Now(),
-                                     app_on_background));
+  base::Closure task =
+      base::Bind(&SimpleIndexFile::SyncWriteToDisk,
+                 cache_type_, cache_directory_, index_file_, temp_index_file_,
+                 base::Passed(&pickle), start, app_on_background);
+  if (callback.is_null())
+    cache_thread_->PostTask(FROM_HERE, task);
+  else
+    cache_thread_->PostTaskAndReply(FROM_HERE, task, callback);
 }
 
 // static
diff --git a/net/disk_cache/simple/simple_index_file.h b/net/disk_cache/simple/simple_index_file.h
index b1f8961..91f2a48 100644
--- a/net/disk_cache/simple/simple_index_file.h
+++ b/net/disk_cache/simple/simple_index_file.h
@@ -90,7 +90,8 @@
   virtual void WriteToDisk(const SimpleIndex::EntrySet& entry_set,
                            uint64 cache_size,
                            const base::TimeTicks& start,
-                           bool app_on_background);
+                           bool app_on_background,
+                           const base::Closure& callback);
 
  private:
   friend class WrappedSimpleIndexFile;
diff --git a/net/disk_cache/simple/simple_index_file_unittest.cc b/net/disk_cache/simple/simple_index_file_unittest.cc
index 77db225..4cedab2 100644
--- a/net/disk_cache/simple/simple_index_file_unittest.cc
+++ b/net/disk_cache/simple/simple_index_file_unittest.cc
@@ -98,24 +98,6 @@
             b.last_used_time_seconds_since_epoch_ &&
         a.entry_size_ == b.entry_size_;
   }
-
- protected:
-  SimpleIndexFileTest() : callback_called_(false) {}
-
-  base::Closure GetCallback() {
-    return base::Bind(&SimpleIndexFileTest::LoadIndexEntriesCallback,
-                      base::Unretained(this));
-  }
-
-  bool callback_called() { return callback_called_; }
-
- private:
-  void LoadIndexEntriesCallback() {
-    EXPECT_FALSE(callback_called_);
-    callback_called_ = true;
-  }
-
-  bool callback_called_;
 };
 
 TEST_F(SimpleIndexFileTest, Serialize) {
@@ -203,11 +185,12 @@
   }
 
   const uint64 kCacheSize = 456U;
+  net::TestClosure closure;
   {
     WrappedSimpleIndexFile simple_index_file(cache_dir.path());
-    simple_index_file.WriteToDisk(entries, kCacheSize,
-                                  base::TimeTicks(), false);
-    base::RunLoop().RunUntilIdle();
+    simple_index_file.WriteToDisk(entries, kCacheSize, base::TimeTicks(),
+                                  false, closure.closure());
+    closure.WaitForResult();
     EXPECT_TRUE(base::PathExists(simple_index_file.GetIndexFilePath()));
   }
 
@@ -215,13 +198,11 @@
   base::Time fake_cache_mtime;
   ASSERT_TRUE(simple_util::GetMTime(cache_dir.path(), &fake_cache_mtime));
   SimpleIndexLoadResult load_index_result;
-  simple_index_file.LoadIndexEntries(fake_cache_mtime,
-                                     GetCallback(),
+  simple_index_file.LoadIndexEntries(fake_cache_mtime, closure.closure(),
                                      &load_index_result);
-  base::RunLoop().RunUntilIdle();
+  closure.WaitForResult();
 
   EXPECT_TRUE(base::PathExists(simple_index_file.GetIndexFilePath()));
-  ASSERT_TRUE(callback_called());
   EXPECT_TRUE(load_index_result.did_load);
   EXPECT_FALSE(load_index_result.flush_required);
 
@@ -246,15 +227,13 @@
                                     &fake_cache_mtime));
   EXPECT_FALSE(WrappedSimpleIndexFile::LegacyIsIndexFileStale(fake_cache_mtime,
                                                               index_path));
-
   SimpleIndexLoadResult load_index_result;
-  simple_index_file.LoadIndexEntries(fake_cache_mtime,
-                                     GetCallback(),
+  net::TestClosure closure;
+  simple_index_file.LoadIndexEntries(fake_cache_mtime, closure.closure(),
                                      &load_index_result);
-  base::RunLoop().RunUntilIdle();
+  closure.WaitForResult();
 
   EXPECT_FALSE(base::PathExists(index_path));
-  ASSERT_TRUE(callback_called());
   EXPECT_TRUE(load_index_result.did_load);
   EXPECT_TRUE(load_index_result.flush_required);
 }
diff --git a/net/disk_cache/simple/simple_index_unittest.cc b/net/disk_cache/simple/simple_index_unittest.cc
index e5d0830..1096488 100644
--- a/net/disk_cache/simple/simple_index_unittest.cc
+++ b/net/disk_cache/simple/simple_index_unittest.cc
@@ -68,7 +68,8 @@
   void WriteToDisk(const SimpleIndex::EntrySet& entry_set,
                    uint64 cache_size,
                    const base::TimeTicks& start,
-                   bool app_on_background) override {
+                   bool app_on_background,
+                   const base::Closure& callback) override {
     disk_writes_++;
     disk_write_entry_set_ = entry_set;
   }
diff --git a/net/http/http_auth_sspi_win.cc b/net/http/http_auth_sspi_win.cc
index 66038d1..156a55f 100644
--- a/net/http/http_auth_sspi_win.cc
+++ b/net/http/http_auth_sspi_win.cc
@@ -360,11 +360,11 @@
 
   // This returns a token that is passed to the remote server.
   DWORD context_attribute;
-  std::wstring spn_wide = base::ASCIIToWide(spn);
+  base::string16 spn16 = base::ASCIIToUTF16(spn);
   SECURITY_STATUS status = library_->InitializeSecurityContext(
       &cred_,  // phCredential
       ctxt_ptr,  // phContext
-      const_cast<wchar_t *>(spn_wide.c_str()),  // pszTargetName
+      const_cast<base::char16*>(spn16.c_str()),  // pszTargetName
       context_flags,  // fContextReq
       0,  // Reserved1 (must be 0)
       SECURITY_NATIVE_DREP,  // TargetDataRep
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index d29342e..eea7294 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -45,7 +45,7 @@
 #include "net/http/http_response_info.h"
 #include "net/http/http_server_properties.h"
 #include "net/http/http_status_code.h"
-#include "net/http/http_stream_base.h"
+#include "net/http/http_stream.h"
 #include "net/http/http_stream_factory.h"
 #include "net/http/http_util.h"
 #include "net/http/transport_security_state.h"
@@ -163,7 +163,7 @@
         stream_->Close(true /* not reusable */);
       } else {
         // Otherwise, we try to drain the response body.
-        HttpStreamBase* stream = stream_.release();
+        HttpStream* stream = stream_.release();
         stream->Drain(session_);
       }
     }
@@ -305,8 +305,7 @@
       // We should call connection_->set_idle_time(), but this doesn't occur
       // often enough to be worth the trouble.
       stream_->SetConnectionReused();
-      new_stream =
-          static_cast<HttpStream*>(stream_.get())->RenewStreamForAuth();
+      new_stream = stream_->RenewStreamForAuth();
     }
 
     if (!new_stream) {
@@ -421,8 +420,7 @@
   if (!stream_.get())
     return UploadProgress();
 
-  // TODO(bashi): This cast is temporary. Remove later.
-  return static_cast<HttpStream*>(stream_.get())->GetUploadProgress();
+  return stream_->GetUploadProgress();
 }
 
 void HttpNetworkTransaction::SetQuicServerInfo(
@@ -471,7 +469,7 @@
 
 void HttpNetworkTransaction::OnStreamReady(const SSLConfig& used_ssl_config,
                                            const ProxyInfo& used_proxy_info,
-                                           HttpStreamBase* stream) {
+                                           HttpStream* stream) {
   DCHECK_EQ(STATE_CREATE_STREAM_COMPLETE, next_state_);
   DCHECK(stream_request_.get());
 
@@ -564,7 +562,7 @@
     const HttpResponseInfo& response_info,
     const SSLConfig& used_ssl_config,
     const ProxyInfo& used_proxy_info,
-    HttpStreamBase* stream) {
+    HttpStream* stream) {
   DCHECK_EQ(STATE_CREATE_STREAM_COMPLETE, next_state_);
 
   headers_valid_ = true;
diff --git a/net/http/http_network_transaction.h b/net/http/http_network_transaction.h
index 47f34eb..e69e550 100644
--- a/net/http/http_network_transaction.h
+++ b/net/http/http_network_transaction.h
@@ -28,7 +28,7 @@
 class ClientSocketHandle;
 class HttpAuthController;
 class HttpNetworkSession;
-class HttpStreamBase;
+class HttpStream;
 class HttpStreamRequest;
 class IOBuffer;
 class ProxyInfo;
@@ -79,7 +79,7 @@
   // HttpStreamRequest::Delegate methods:
   void OnStreamReady(const SSLConfig& used_ssl_config,
                      const ProxyInfo& used_proxy_info,
-                     HttpStreamBase* stream) override;
+                     HttpStream* stream) override;
   void OnWebSocketHandshakeStreamReady(
       const SSLConfig& used_ssl_config,
       const ProxyInfo& used_proxy_info,
@@ -97,7 +97,7 @@
   void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info,
                                   const SSLConfig& used_ssl_config,
                                   const ProxyInfo& used_proxy_info,
-                                  HttpStreamBase* stream) override;
+                                  HttpStream* stream) override;
 
  private:
   friend class HttpNetworkTransactionSSLTest;
@@ -247,7 +247,7 @@
   // Debug helper.
   static std::string DescribeState(State state);
 
-  void SetStream(HttpStreamBase* stream);
+  void SetStream(HttpStream* stream);
 
   scoped_refptr<HttpAuthController>
       auth_controllers_[HttpAuth::AUTH_NUM_TARGETS];
@@ -271,7 +271,7 @@
   ProxyInfo proxy_info_;
 
   scoped_ptr<HttpStreamRequest> stream_request_;
-  scoped_ptr<HttpStreamBase> stream_;
+  scoped_ptr<HttpStream> stream_;
 
   // True if we've validated the headers that the stream parser has returned.
   bool headers_valid_;
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index be94493..938f1b0 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -8511,7 +8511,7 @@
   const AlternateProtocolInfo alternate =
       http_server_properties->GetAlternateProtocol(
           HostPortPair::FromURL(request.url));
-  EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
+  EXPECT_TRUE(alternate.is_broken);
 }
 
 TEST_P(HttpNetworkTransactionTest,
@@ -12193,8 +12193,8 @@
 
 namespace {
 
-// Fake HttpStreamBase that simply records calls to SetPriority().
-class FakeStream : public HttpStreamBase,
+// Fake HttpStream that simply records calls to SetPriority().
+class FakeStream : public HttpStream,
                    public base::SupportsWeakPtr<FakeStream> {
  public:
   explicit FakeStream(RequestPriority priority) : priority_(priority) {}
@@ -12274,6 +12274,10 @@
 
   void SetPriority(RequestPriority priority) override { priority_ = priority; }
 
+  UploadProgress GetUploadProgress() const override { return UploadProgress(); }
+
+  HttpStream* RenewStreamForAuth() override { return NULL; }
+
  private:
   RequestPriority priority_;
 
diff --git a/net/http/http_response_body_drainer.cc b/net/http/http_response_body_drainer.cc
index 91dbbf7..fdcec31 100644
--- a/net/http/http_response_body_drainer.cc
+++ b/net/http/http_response_body_drainer.cc
@@ -9,11 +9,11 @@
 #include "net/base/io_buffer.h"
 #include "net/base/net_errors.h"
 #include "net/http/http_network_session.h"
-#include "net/http/http_stream_base.h"
+#include "net/http/http_stream.h"
 
 namespace net {
 
-HttpResponseBodyDrainer::HttpResponseBodyDrainer(HttpStreamBase* stream)
+HttpResponseBodyDrainer::HttpResponseBodyDrainer(HttpStream* stream)
     : stream_(stream),
       next_state_(STATE_NONE),
       total_read_(0),
diff --git a/net/http/http_response_body_drainer.h b/net/http/http_response_body_drainer.h
index 5c7713e..a4255d0 100644
--- a/net/http/http_response_body_drainer.h
+++ b/net/http/http_response_body_drainer.h
@@ -15,7 +15,7 @@
 
 namespace net {
 
-class HttpStreamBase;
+class HttpStream;
 class IOBuffer;
 
 class NET_EXPORT_PRIVATE HttpResponseBodyDrainer {
@@ -27,7 +27,7 @@
   static const int kDrainBodyBufferSize = 16384;
   static const int kTimeoutInSeconds = 5;
 
-  explicit HttpResponseBodyDrainer(HttpStreamBase* stream);
+  explicit HttpResponseBodyDrainer(HttpStream* stream);
   ~HttpResponseBodyDrainer();
 
   // Starts reading the body until completion, or we hit the buffer limit, or we
@@ -52,7 +52,7 @@
   void Finish(int result);
 
   scoped_refptr<IOBuffer> read_buf_;
-  const scoped_ptr<HttpStreamBase> stream_;
+  const scoped_ptr<HttpStream> stream_;
   State next_state_;
   int total_read_;
   CompletionCallback user_callback_;
diff --git a/net/http/http_response_info.cc b/net/http/http_response_info.cc
index 9569b38..2ec0fb5 100644
--- a/net/http/http_response_info.cc
+++ b/net/http/http_response_info.cc
@@ -396,9 +396,9 @@
     case CONNECTION_INFO_SPDY3:
       return "spdy/3";
     case CONNECTION_INFO_SPDY4:
-      // This is the HTTP/2 draft 14 identifier. For internal
+      // This is the HTTP/2 draft-15 identifier. For internal
       // consistency, HTTP/2 is named SPDY4 within Chromium.
-      return "h2-14";
+      return "h2-15";
     case CONNECTION_INFO_QUIC1_SPDY3:
       return "quic/1+spdy/3";
     case NUM_OF_CONNECTION_INFOS:
diff --git a/net/http/http_server_properties.cc b/net/http/http_server_properties.cc
index a9cbd72..cc41ea8 100644
--- a/net/http/http_server_properties.cc
+++ b/net/http/http_server_properties.cc
@@ -20,10 +20,9 @@
   "npn-spdy/2",
   "npn-spdy/3",
   "npn-spdy/3.1",
-  "npn-h2-14",  // HTTP/2 draft 14. Called SPDY4 internally.
+  "npn-h2-15",  // HTTP/2 draft-15. Called SPDY4 internally.
   "quic"
 };
-const char kBrokenAlternateProtocol[] = "Broken";
 
 COMPILE_ASSERT(
     arraysize(kAlternateProtocolStrings) == NUM_VALID_ALTERNATE_PROTOCOLS,
@@ -57,8 +56,6 @@
       DCHECK(IsAlternateProtocolValid(protocol));
       return kAlternateProtocolStrings[
           protocol - ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION];
-    case ALTERNATE_PROTOCOL_BROKEN:
-      return kBrokenAlternateProtocol;
     case UNINITIALIZED_ALTERNATE_PROTOCOL:
       return "Uninitialized";
   }
@@ -73,8 +70,6 @@
     if (str == AlternateProtocolToString(protocol))
       return protocol;
   }
-  if (str == kBrokenAlternateProtocol)
-    return ALTERNATE_PROTOCOL_BROKEN;
   return UNINITIALIZED_ALTERNATE_PROTOCOL;
 }
 
@@ -101,9 +96,10 @@
 }
 
 std::string AlternateProtocolInfo::ToString() const {
-  return base::StringPrintf("%d:%s p=%f", port,
+  return base::StringPrintf("%d:%s p=%f%s", port,
                             AlternateProtocolToString(protocol),
-                            probability);
+                            probability,
+                            is_broken ? " (broken)" : "");
 }
 
 }  // namespace net
diff --git a/net/http/http_server_properties.h b/net/http/http_server_properties.h
index edf598f..337f22d 100644
--- a/net/http/http_server_properties.h
+++ b/net/http/http_server_properties.h
@@ -61,7 +61,6 @@
   NPN_SPDY_MAXIMUM_VERSION = NPN_SPDY_4,
   QUIC,
   ALTERNATE_PROTOCOL_MAXIMUM_VALID_VERSION = QUIC,
-  ALTERNATE_PROTOCOL_BROKEN,  // The alternate protocol is known to be broken.
   UNINITIALIZED_ALTERNATE_PROTOCOL,
 };
 
@@ -88,7 +87,17 @@
                         double probability)
       : port(port),
         protocol(protocol),
-        probability(probability) {}
+        probability(probability),
+        is_broken(false) {}
+
+  AlternateProtocolInfo(uint16 port,
+                        AlternateProtocol protocol,
+                        double probability,
+                        bool is_broken)
+      : port(port),
+        protocol(protocol),
+        probability(probability),
+        is_broken(is_broken) {}
 
   bool Equals(const AlternateProtocolInfo& other) const {
     return port == other.port &&
@@ -101,6 +110,7 @@
   uint16 port;
   AlternateProtocol protocol;
   double probability;
+  bool is_broken;
 };
 
 struct NET_EXPORT SupportsQuic {
diff --git a/net/http/http_server_properties_impl.cc b/net/http/http_server_properties_impl.cc
index 103d0e1..65ecd11 100644
--- a/net/http/http_server_properties_impl.cc
+++ b/net/http/http_server_properties_impl.cc
@@ -49,13 +49,12 @@
 
 void HttpServerPropertiesImpl::InitializeAlternateProtocolServers(
     AlternateProtocolMap* alternate_protocol_map) {
-  // Keep all the ALTERNATE_PROTOCOL_BROKEN ones since those don't
-  // get persisted.
+  // Keep all the broken ones since those don't get persisted.
   for (AlternateProtocolMap::iterator it = alternate_protocol_map_.begin();
        it != alternate_protocol_map_.end();) {
     AlternateProtocolMap::iterator old_it = it;
     ++it;
-    if (old_it->second.protocol != ALTERNATE_PROTOCOL_BROKEN) {
+    if (!old_it->second.is_broken) {
       alternate_protocol_map_.Erase(old_it);
     }
   }
@@ -251,10 +250,6 @@
     uint16 alternate_port,
     AlternateProtocol alternate_protocol,
     double alternate_probability) {
-  if (alternate_protocol == ALTERNATE_PROTOCOL_BROKEN) {
-    LOG(DFATAL) << "Call SetBrokenAlternateProtocol() instead.";
-    return;
-  }
 
   AlternateProtocolInfo alternate(alternate_port,
                                   alternate_protocol,
@@ -263,13 +258,12 @@
     const AlternateProtocolInfo existing_alternate =
         GetAlternateProtocol(server);
 
-    if (existing_alternate.protocol == ALTERNATE_PROTOCOL_BROKEN) {
+    if (existing_alternate.is_broken) {
       DVLOG(1) << "Ignore alternate protocol since it's known to be broken.";
       return;
     }
 
-    if (alternate_protocol != ALTERNATE_PROTOCOL_BROKEN &&
-        !existing_alternate.Equals(alternate)) {
+    if (!existing_alternate.Equals(alternate)) {
       LOG(WARNING) << "Changing the alternate protocol for: "
                    << server.ToString()
                    << " from [Port: " << existing_alternate.port
@@ -306,14 +300,11 @@
 void HttpServerPropertiesImpl::SetBrokenAlternateProtocol(
     const HostPortPair& server) {
   AlternateProtocolMap::iterator it = alternate_protocol_map_.Get(server);
-  if (it != alternate_protocol_map_.end()) {
-    it->second.protocol = ALTERNATE_PROTOCOL_BROKEN;
-  } else {
-    AlternateProtocolInfo alternate(server.port(),
-                                    ALTERNATE_PROTOCOL_BROKEN,
-                                    1);
-    alternate_protocol_map_.Put(server, alternate);
+  if (it == alternate_protocol_map_.end()) {
+    LOG(DFATAL) << "Trying to mark unknown alternate protocol broken.";
+    return;
   }
+  it->second.is_broken = true;
   int count = ++broken_alternate_protocol_map_[server];
   base::TimeDelta delay =
       base::TimeDelta::FromSeconds(kBrokenAlternateProtocolDelaySecs);
diff --git a/net/http/http_server_properties_impl_unittest.cc b/net/http/http_server_properties_impl_unittest.cc
index a23ebbe..1c016b7 100644
--- a/net/http/http_server_properties_impl_unittest.cc
+++ b/net/http/http_server_properties_impl_unittest.cc
@@ -286,19 +286,18 @@
 
 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
   HostPortPair test_host_port_pair1("foo1", 80);
+  impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
   impl_.SetBrokenAlternateProtocol(test_host_port_pair1);
   HostPortPair test_host_port_pair2("foo2", 80);
   impl_.SetAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1);
 
   AlternateProtocolMap alternate_protocol_map(
       AlternateProtocolMap::NO_AUTO_EVICT);
-  AlternateProtocolInfo port_alternate_protocol_pair(123, NPN_SPDY_3, 1);
-  alternate_protocol_map.Put(test_host_port_pair2,
-                             port_alternate_protocol_pair);
+  AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
+  alternate_protocol_map.Put(test_host_port_pair2, alternate);
   HostPortPair test_host_port_pair3("foo3", 80);
-  port_alternate_protocol_pair.port = 1234;
-  alternate_protocol_map.Put(test_host_port_pair3,
-                             port_alternate_protocol_pair);
+  alternate.port = 1234;
+  alternate_protocol_map.Put(test_host_port_pair3, alternate);
   impl_.InitializeAlternateProtocolServers(&alternate_protocol_map);
 
   // Verify test_host_port_pair3 is the MRU server.
@@ -311,13 +310,11 @@
 
   ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
   ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair2));
-  port_alternate_protocol_pair =
-      impl_.GetAlternateProtocol(test_host_port_pair1);
-  EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, port_alternate_protocol_pair.protocol);
-  port_alternate_protocol_pair =
-      impl_.GetAlternateProtocol(test_host_port_pair2);
-  EXPECT_EQ(123, port_alternate_protocol_pair.port);
-  EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol_pair.protocol);
+  alternate = impl_.GetAlternateProtocol(test_host_port_pair1);
+  EXPECT_TRUE(alternate.is_broken);
+  alternate = impl_.GetAlternateProtocol(test_host_port_pair2);
+  EXPECT_EQ(123, alternate.port);
+  EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfHasAlternateProtocol) {
@@ -365,11 +362,12 @@
 
 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
   HostPortPair test_host_port_pair("foo", 80);
+  impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
   impl_.SetBrokenAlternateProtocol(test_host_port_pair);
   ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
   AlternateProtocolInfo alternate =
       impl_.GetAlternateProtocol(test_host_port_pair);
-  EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
+  EXPECT_TRUE(alternate.is_broken);
 
   impl_.SetAlternateProtocol(
       test_host_port_pair,
@@ -377,17 +375,17 @@
       NPN_SPDY_3,
       1);
   alternate = impl_.GetAlternateProtocol(test_host_port_pair);
-  EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol)
-      << "Second attempt should be ignored.";
+  EXPECT_TRUE(alternate.is_broken) << "Second attempt should be ignored.";
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
   HostPortPair test_host_port_pair("foo", 80);
+  impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
   impl_.SetBrokenAlternateProtocol(test_host_port_pair);
   ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
   AlternateProtocolInfo alternate =
       impl_.GetAlternateProtocol(test_host_port_pair);
-  EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
+  EXPECT_TRUE(alternate.is_broken);
   impl_.ClearAlternateProtocol(test_host_port_pair);
   EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
 }
diff --git a/net/http/http_server_properties_manager.cc b/net/http/http_server_properties_manager.cc
index 6796fb1..794030d 100644
--- a/net/http/http_server_properties_manager.cc
+++ b/net/http/http_server_properties_manager.cc
@@ -746,11 +746,11 @@
     }
 
     // Save alternate_protocol.
-    if (server_pref.alternate_protocol) {
+    const net::AlternateProtocolInfo* port_alternate_protocol =
+        server_pref.alternate_protocol;
+    if (port_alternate_protocol && !port_alternate_protocol->is_broken) {
       base::DictionaryValue* port_alternate_protocol_dict =
           new base::DictionaryValue;
-      const net::AlternateProtocolInfo* port_alternate_protocol =
-          server_pref.alternate_protocol;
       port_alternate_protocol_dict->SetInteger("port",
                                                port_alternate_protocol->port);
       const char* protocol_str =
diff --git a/net/http/http_stream.h b/net/http/http_stream.h
index 3dda50b..3e8703d 100644
--- a/net/http/http_stream.h
+++ b/net/http/http_stream.h
@@ -12,19 +12,148 @@
 #define NET_HTTP_HTTP_STREAM_H_
 
 #include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
 #include "net/base/completion_callback.h"
 #include "net/base/net_export.h"
+#include "net/base/request_priority.h"
 #include "net/base/upload_progress.h"
-#include "net/http/http_stream_base.h"
 
 namespace net {
 
+class BoundNetLog;
+class HttpNetworkSession;
+class HttpRequestHeaders;
+struct HttpRequestInfo;
+class HttpResponseInfo;
 class IOBuffer;
+struct LoadTimingInfo;
+class SSLCertRequestInfo;
+class SSLInfo;
 
-class NET_EXPORT_PRIVATE HttpStream : public HttpStreamBase {
+class NET_EXPORT_PRIVATE HttpStream {
  public:
   HttpStream() {}
-  ~HttpStream() override {}
+  virtual ~HttpStream() {}
+
+  // Initialize stream.  Must be called before calling SendRequest().
+  // |request_info| must outlive the HttpStream.
+  // Returns a net error code, possibly ERR_IO_PENDING.
+  virtual int InitializeStream(const HttpRequestInfo* request_info,
+                               RequestPriority priority,
+                               const BoundNetLog& net_log,
+                               const CompletionCallback& callback) = 0;
+
+  // Writes the headers and uploads body data to the underlying socket.
+  // ERR_IO_PENDING is returned if the operation could not be completed
+  // synchronously, in which case the result will be passed to the callback
+  // when available. Returns OK on success.
+  //
+  // The callback will only be invoked once the first full set of headers have
+  // been received, at which point |response| will have been populated with that
+  // set of headers, and is safe to read, until/unless ReadResponseHeaders is
+  // called.
+  //
+  // |response| must remain valid until all sets of headers has been read, or
+  // the HttpStream is destroyed. There's typically only one set of
+  // headers, except in the case of 1xx responses (See ReadResponseHeaders).
+  virtual int SendRequest(const HttpRequestHeaders& request_headers,
+                          HttpResponseInfo* response,
+                          const CompletionCallback& callback) = 0;
+
+  // Reads from the underlying socket until the next set of response headers
+  // have been completely received.  This may only be called on 1xx responses
+  // after SendRequest has completed successfully, to read the next set of
+  // headers.
+  //
+  // ERR_IO_PENDING is returned if the operation could not be completed
+  // synchronously, in which case the result will be passed to the callback when
+  // available. Returns OK on success. The response headers are available in
+  // the HttpResponseInfo passed in to original call to SendRequest.
+  virtual int ReadResponseHeaders(const CompletionCallback& callback) = 0;
+
+  // Reads response body data, up to |buf_len| bytes. |buf_len| should be a
+  // reasonable size (<2MB). The number of bytes read is returned, or an
+  // error is returned upon failure.  0 indicates that the request has been
+  // fully satisfied and there is no more data to read.
+  // ERR_CONNECTION_CLOSED is returned when the connection has been closed
+  // prematurely.  ERR_IO_PENDING is returned if the operation could not be
+  // completed synchronously, in which case the result will be passed to the
+  // callback when available. If the operation is not completed immediately,
+  // the socket acquires a reference to the provided buffer until the callback
+  // is invoked or the socket is destroyed.
+  virtual int ReadResponseBody(IOBuffer* buf, int buf_len,
+                               const CompletionCallback& callback) = 0;
+
+  // Closes the stream.
+  // |not_reusable| indicates if the stream can be used for further requests.
+  // In the case of HTTP, where we re-use the byte-stream (e.g. the connection)
+  // this means we need to close the connection; in the case of SPDY, where the
+  // underlying stream is never reused, it has no effect.
+  // TODO(mbelshe): We should figure out how to fold the not_reusable flag
+  //                into the stream implementation itself so that the caller
+  //                does not need to pass it at all.  We might also be able to
+  //                eliminate the SetConnectionReused() below.
+  virtual void Close(bool not_reusable) = 0;
+
+  // Indicates if the response body has been completely read.
+  virtual bool IsResponseBodyComplete() const = 0;
+
+  // Indicates that the end of the response is detectable. This means that
+  // the response headers indicate either chunked encoding or content length.
+  // If neither is sent, the server must close the connection for us to detect
+  // the end of the response.
+  // TODO(rch): Rename this method, so that it is clear why it exists
+  // particularly as it applies to QUIC and SPDY for which the end of the
+  // response is always findable.
+  virtual bool CanFindEndOfResponse() const = 0;
+
+  // A stream exists on top of a connection.  If the connection has been used
+  // to successfully exchange data in the past, error handling for the
+  // stream is done differently.  This method returns true if the underlying
+  // connection is reused or has been connected and idle for some time.
+  virtual bool IsConnectionReused() const = 0;
+  virtual void SetConnectionReused() = 0;
+
+  // Checks whether the current state of the underlying connection
+  // allows it to be reused.
+  virtual bool IsConnectionReusable() const = 0;
+
+  // Get the total number of bytes received from network for this stream.
+  virtual int64 GetTotalReceivedBytes() const = 0;
+
+  // Populates the connection establishment part of |load_timing_info|, and
+  // socket ID.  |load_timing_info| must have all null times when called.
+  // Returns false and does nothing if there is no underlying connection, either
+  // because one has yet to be assigned to the stream, or because the underlying
+  // socket has been closed.
+  //
+  // In practice, this means that this function will always succeed any time
+  // between when the full headers have been received and the stream has been
+  // closed.
+  virtual bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const = 0;
+
+  // Get the SSLInfo associated with this stream's connection.  This should
+  // only be called for streams over SSL sockets, otherwise the behavior is
+  // undefined.
+  virtual void GetSSLInfo(SSLInfo* ssl_info) = 0;
+
+  // Get the SSLCertRequestInfo associated with this stream's connection.
+  // This should only be called for streams over SSL sockets, otherwise the
+  // behavior is undefined.
+  virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) = 0;
+
+  // HACK(willchan): Really, we should move the HttpResponseDrainer logic into
+  // the HttpStream implementation. This is just a quick hack.
+  virtual bool IsSpdyHttpStream() const = 0;
+
+  // In the case of an HTTP error or redirect, flush the response body (usually
+  // a simple error or "this page has moved") so that we can re-use the
+  // underlying connection. This stream is responsible for deleting itself when
+  // draining is complete.
+  virtual void Drain(HttpNetworkSession* session) = 0;
+
+  // Called when the priority of the parent transaction changes.
+  virtual void SetPriority(RequestPriority priority) = 0;
 
   // Queries the UploadDataStream for its progress (bytes sent).
   virtual UploadProgress GetUploadProgress() const = 0;
diff --git a/net/http/http_stream_base.h b/net/http/http_stream_base.h
deleted file mode 100644
index 76e57ef..0000000
--- a/net/http/http_stream_base.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// HttpStreamBase is an interface for reading and writing data to an
-// HTTP-like stream that keeps the client agnostic of the actual underlying
-// transport layer.  This provides an abstraction for HttpStream and
-// WebSocketHandshakeStreamBase.
-
-#ifndef NET_HTTP_HTTP_STREAM_BASE_H_
-#define NET_HTTP_HTTP_STREAM_BASE_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-#include "net/base/completion_callback.h"
-#include "net/base/net_export.h"
-#include "net/base/request_priority.h"
-#include "net/base/upload_progress.h"
-
-namespace net {
-
-class BoundNetLog;
-class HttpNetworkSession;
-class HttpRequestHeaders;
-struct HttpRequestInfo;
-class HttpResponseInfo;
-class IOBuffer;
-struct LoadTimingInfo;
-class SSLCertRequestInfo;
-class SSLInfo;
-
-class NET_EXPORT_PRIVATE HttpStreamBase {
- public:
-  HttpStreamBase() {}
-  virtual ~HttpStreamBase() {}
-
-  // Initialize stream.  Must be called before calling SendRequest().
-  // |request_info| must outlive the HttpStreamBase.
-  // Returns a net error code, possibly ERR_IO_PENDING.
-  virtual int InitializeStream(const HttpRequestInfo* request_info,
-                               RequestPriority priority,
-                               const BoundNetLog& net_log,
-                               const CompletionCallback& callback) = 0;
-
-  // Writes the headers and uploads body data to the underlying socket.
-  // ERR_IO_PENDING is returned if the operation could not be completed
-  // synchronously, in which case the result will be passed to the callback
-  // when available. Returns OK on success.
-  //
-  // The callback will only be invoked once the first full set of headers have
-  // been received, at which point |response| will have been populated with that
-  // set of headers, and is safe to read, until/unless ReadResponseHeaders is
-  // called.
-  //
-  // |response| must remain valid until all sets of headers has been read, or
-  // the HttpStreamBase is destroyed. There's typically only one set of
-  // headers, except in the case of 1xx responses (See ReadResponseHeaders).
-  virtual int SendRequest(const HttpRequestHeaders& request_headers,
-                          HttpResponseInfo* response,
-                          const CompletionCallback& callback) = 0;
-
-  // Reads from the underlying socket until the next set of response headers
-  // have been completely received.  This may only be called on 1xx responses
-  // after SendRequest has completed successfully, to read the next set of
-  // headers.
-  //
-  // ERR_IO_PENDING is returned if the operation could not be completed
-  // synchronously, in which case the result will be passed to the callback when
-  // available. Returns OK on success. The response headers are available in
-  // the HttpResponseInfo passed in to original call to SendRequest.
-  virtual int ReadResponseHeaders(const CompletionCallback& callback) = 0;
-
-  // Reads response body data, up to |buf_len| bytes. |buf_len| should be a
-  // reasonable size (<2MB). The number of bytes read is returned, or an
-  // error is returned upon failure.  0 indicates that the request has been
-  // fully satisfied and there is no more data to read.
-  // ERR_CONNECTION_CLOSED is returned when the connection has been closed
-  // prematurely.  ERR_IO_PENDING is returned if the operation could not be
-  // completed synchronously, in which case the result will be passed to the
-  // callback when available. If the operation is not completed immediately,
-  // the socket acquires a reference to the provided buffer until the callback
-  // is invoked or the socket is destroyed.
-  virtual int ReadResponseBody(IOBuffer* buf, int buf_len,
-                               const CompletionCallback& callback) = 0;
-
-  // Closes the stream.
-  // |not_reusable| indicates if the stream can be used for further requests.
-  // In the case of HTTP, where we re-use the byte-stream (e.g. the connection)
-  // this means we need to close the connection; in the case of SPDY, where the
-  // underlying stream is never reused, it has no effect.
-  // TODO(mbelshe): We should figure out how to fold the not_reusable flag
-  //                into the stream implementation itself so that the caller
-  //                does not need to pass it at all.  We might also be able to
-  //                eliminate the SetConnectionReused() below.
-  virtual void Close(bool not_reusable) = 0;
-
-  // Indicates if the response body has been completely read.
-  virtual bool IsResponseBodyComplete() const = 0;
-
-  // Indicates that the end of the response is detectable. This means that
-  // the response headers indicate either chunked encoding or content length.
-  // If neither is sent, the server must close the connection for us to detect
-  // the end of the response.
-  // TODO(rch): Rename this method, so that it is clear why it exists
-  // particularly as it applies to QUIC and SPDY for which the end of the
-  // response is always findable.
-  virtual bool CanFindEndOfResponse() const = 0;
-
-  // A stream exists on top of a connection.  If the connection has been used
-  // to successfully exchange data in the past, error handling for the
-  // stream is done differently.  This method returns true if the underlying
-  // connection is reused or has been connected and idle for some time.
-  virtual bool IsConnectionReused() const = 0;
-  virtual void SetConnectionReused() = 0;
-
-  // Checks whether the current state of the underlying connection
-  // allows it to be reused.
-  virtual bool IsConnectionReusable() const = 0;
-
-  // Get the total number of bytes received from network for this stream.
-  virtual int64 GetTotalReceivedBytes() const = 0;
-
-  // Populates the connection establishment part of |load_timing_info|, and
-  // socket ID.  |load_timing_info| must have all null times when called.
-  // Returns false and does nothing if there is no underlying connection, either
-  // because one has yet to be assigned to the stream, or because the underlying
-  // socket has been closed.
-  //
-  // In practice, this means that this function will always succeed any time
-  // between when the full headers have been received and the stream has been
-  // closed.
-  virtual bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const = 0;
-
-  // Get the SSLInfo associated with this stream's connection.  This should
-  // only be called for streams over SSL sockets, otherwise the behavior is
-  // undefined.
-  virtual void GetSSLInfo(SSLInfo* ssl_info) = 0;
-
-  // Get the SSLCertRequestInfo associated with this stream's connection.
-  // This should only be called for streams over SSL sockets, otherwise the
-  // behavior is undefined.
-  virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) = 0;
-
-  // HACK(willchan): Really, we should move the HttpResponseDrainer logic into
-  // the HttpStream implementation. This is just a quick hack.
-  virtual bool IsSpdyHttpStream() const = 0;
-
-  // In the case of an HTTP error or redirect, flush the response body (usually
-  // a simple error or "this page has moved") so that we can re-use the
-  // underlying connection. This stream is responsible for deleting itself when
-  // draining is complete.
-  virtual void Drain(HttpNetworkSession* session) = 0;
-
-  // Called when the priority of the parent transaction changes.
-  virtual void SetPriority(RequestPriority priority) = 0;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(HttpStreamBase);
-};
-
-}  // namespace net
-
-#endif  // NET_HTTP_HTTP_STREAM_BASE_H_
diff --git a/net/http/http_stream_factory.cc b/net/http/http_stream_factory.cc
index e86d8f8..29d9b26 100644
--- a/net/http/http_stream_factory.cc
+++ b/net/http/http_stream_factory.cc
@@ -67,14 +67,10 @@
       return;
     }
 
-    protocol =
-        AlternateProtocolFromString(port_protocol_vector[1]);
+    protocol = AlternateProtocolFromString(port_protocol_vector[1]);
+
     if (IsAlternateProtocolValid(protocol) &&
         !session.IsProtocolEnabled(protocol)) {
-      protocol = ALTERNATE_PROTOCOL_BROKEN;
-    }
-
-    if (protocol == ALTERNATE_PROTOCOL_BROKEN) {
       DVLOG(1) << kAlternateProtocolHeader
                << " header has unrecognized protocol: "
                << port_protocol_vector[1];
@@ -94,7 +90,7 @@
     const AlternateProtocolInfo existing_alternate =
         http_server_properties->GetAlternateProtocol(host_port);
     // If we think the alternate protocol is broken, don't change it.
-    if (existing_alternate.protocol == ALTERNATE_PROTOCOL_BROKEN)
+    if (existing_alternate.is_broken)
       return;
   }
 
diff --git a/net/http/http_stream_factory.h b/net/http/http_stream_factory.h
index 8f6d892..e671262 100644
--- a/net/http/http_stream_factory.h
+++ b/net/http/http_stream_factory.h
@@ -37,7 +37,7 @@
 class HttpNetworkSession;
 class HttpResponseInfo;
 class HttpServerProperties;
-class HttpStreamBase;
+class HttpStream;
 class ProxyInfo;
 class SSLCertRequestInfo;
 class SSLInfo;
@@ -68,7 +68,7 @@
     virtual void OnStreamReady(
         const SSLConfig& used_ssl_config,
         const ProxyInfo& used_proxy_info,
-        HttpStreamBase* stream) = 0;
+        HttpStream* stream) = 0;
 
     // This is the success case for RequestWebSocketHandshakeStream.
     // |stream| is now owned by the delegate.
@@ -143,7 +143,7 @@
         const HttpResponseInfo& response_info,
         const SSLConfig& used_ssl_config,
         const ProxyInfo& used_proxy_info,
-        HttpStreamBase* stream) = 0;
+        HttpStream* stream) = 0;
   };
 
   virtual ~HttpStreamRequest() {}
diff --git a/net/http/http_stream_factory_impl.cc b/net/http/http_stream_factory_impl.cc
index 689bcf9..8304694 100644
--- a/net/http/http_stream_factory_impl.cc
+++ b/net/http/http_stream_factory_impl.cc
@@ -194,7 +194,7 @@
 
   AlternateProtocolInfo alternate =
       http_server_properties.GetAlternateProtocol(origin);
-  if (alternate.protocol == ALTERNATE_PROTOCOL_BROKEN) {
+  if (alternate.is_broken) {
     HistogramAlternateProtocolUsage(ALTERNATE_PROTOCOL_USAGE_BROKEN);
     return kNoAlternateProtocol;
   }
diff --git a/net/http/http_stream_factory_impl_request.cc b/net/http/http_stream_factory_impl_request.cc
index 2cc497f..c4d1d07 100644
--- a/net/http/http_stream_factory_impl_request.cc
+++ b/net/http/http_stream_factory_impl_request.cc
@@ -90,7 +90,7 @@
     Job* job,
     const SSLConfig& used_ssl_config,
     const ProxyInfo& used_proxy_info,
-    HttpStreamBase* stream) {
+    HttpStream* stream) {
   DCHECK(!factory_->for_websockets_);
   DCHECK(stream);
   DCHECK(completed_);
@@ -185,7 +185,7 @@
     const HttpResponseInfo& response_info,
     const SSLConfig& used_ssl_config,
     const ProxyInfo& used_proxy_info,
-    HttpStreamBase* stream) {
+    HttpStream* stream) {
   if (!bound_job_.get())
     OrphanJobsExcept(job);
   else
diff --git a/net/http/http_stream_factory_impl_request.h b/net/http/http_stream_factory_impl_request.h
index 70def25..fd786f2 100644
--- a/net/http/http_stream_factory_impl_request.h
+++ b/net/http/http_stream_factory_impl_request.h
@@ -71,7 +71,7 @@
   void OnStreamReady(Job* job,
                      const SSLConfig& used_ssl_config,
                      const ProxyInfo& used_proxy_info,
-                     HttpStreamBase* stream);
+                     HttpStream* stream);
   void OnWebSocketHandshakeStreamReady(Job* job,
                                        const SSLConfig& used_ssl_config,
                                        const ProxyInfo& used_proxy_info,
@@ -94,7 +94,7 @@
       const HttpResponseInfo& response_info,
       const SSLConfig& used_ssl_config,
       const ProxyInfo& used_proxy_info,
-      HttpStreamBase* stream);
+      HttpStream* stream);
 
   // HttpStreamRequest methods.
 
diff --git a/net/http/http_stream_factory_impl_request_unittest.cc b/net/http/http_stream_factory_impl_request_unittest.cc
index e204c61..4695067 100644
--- a/net/http/http_stream_factory_impl_request_unittest.cc
+++ b/net/http/http_stream_factory_impl_request_unittest.cc
@@ -33,7 +33,7 @@
   // HttpStreamRequest::Delegate
   void OnStreamReady(const SSLConfig& used_ssl_config,
                      const ProxyInfo& used_proxy_info,
-                     HttpStreamBase* stream) override {}
+                     HttpStream* stream) override {}
   void OnWebSocketHandshakeStreamReady(
       const SSLConfig& used_ssl_config,
       const ProxyInfo& used_proxy_info,
@@ -51,7 +51,7 @@
   void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info,
                                   const SSLConfig& used_ssl_config,
                                   const ProxyInfo& used_proxy_info,
-                                  HttpStreamBase* stream) override {}
+                                  HttpStream* stream) override {}
 };
 
 }  // namespace
diff --git a/net/http/http_stream_factory_impl_unittest.cc b/net/http/http_stream_factory_impl_unittest.cc
index 1efbd46..4bf1659 100644
--- a/net/http/http_stream_factory_impl_unittest.cc
+++ b/net/http/http_stream_factory_impl_unittest.cc
@@ -58,7 +58,7 @@
     return type_;
   }
 
-  // HttpStreamBase methods
+  // HttpStream methods
   int InitializeStream(const HttpRequestInfo* request_info,
                        RequestPriority priority,
                        const BoundNetLog& net_log,
@@ -93,6 +93,8 @@
   bool IsSpdyHttpStream() const override { return false; }
   void Drain(HttpNetworkSession* session) override {}
   void SetPriority(RequestPriority priority) override {}
+  UploadProgress GetUploadProgress() const override { return UploadProgress(); }
+  HttpStream* RenewStreamForAuth() override { return nullptr; }
 
   scoped_ptr<WebSocketStream> Upgrade() override {
     return scoped_ptr<WebSocketStream>();
@@ -142,7 +144,7 @@
 
   void OnStreamReady(const SSLConfig& used_ssl_config,
                      const ProxyInfo& used_proxy_info,
-                     HttpStreamBase* stream) override {
+                     HttpStream* stream) override {
     stream_done_ = true;
     if (waiting_for_stream_)
       base::MessageLoop::current()->Quit();
@@ -180,7 +182,7 @@
   void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info,
                                   const SSLConfig& used_ssl_config,
                                   const ProxyInfo& used_proxy_info,
-                                  HttpStreamBase* stream) override {}
+                                  HttpStream* stream) override {}
 
   void WaitForStream() {
     while (!stream_done_) {
@@ -198,7 +200,7 @@
     return used_proxy_info_;
   }
 
-  HttpStreamBase* stream() {
+  HttpStream* stream() {
     return stream_.get();
   }
 
@@ -211,7 +213,7 @@
  private:
   bool waiting_for_stream_;
   bool stream_done_;
-  scoped_ptr<HttpStreamBase> stream_;
+  scoped_ptr<HttpStream> stream_;
   scoped_ptr<WebSocketHandshakeStreamBase> websocket_stream_;
   SSLConfig used_ssl_config_;
   ProxyInfo used_proxy_info_;
@@ -382,14 +384,14 @@
 template<typename ParentPool>
 CapturePreconnectsSocketPool<ParentPool>::CapturePreconnectsSocketPool(
     HostResolver* host_resolver, CertVerifier* /* cert_verifier */)
-    : ParentPool(0, 0, NULL, host_resolver, NULL, NULL),
+    : ParentPool(0, 0, nullptr, host_resolver, nullptr, nullptr),
       last_num_streams_(-1) {}
 
 template<>
 CapturePreconnectsHttpProxySocketPool::CapturePreconnectsSocketPool(
     HostResolver* host_resolver, CertVerifier* /* cert_verifier */)
     : HttpProxyClientSocketPool(
-          0, 0, NULL, host_resolver, NULL, NULL, NULL, NULL),
+          0, 0, nullptr, host_resolver, nullptr, nullptr, nullptr, nullptr),
       last_num_streams_(-1) {}
 
 template <>
@@ -398,20 +400,20 @@
     CertVerifier* cert_verifier)
     : SSLClientSocketPool(0,
                           0,
-                          NULL,  // ssl_histograms
+                          nullptr,  // ssl_histograms
                           host_resolver,
                           cert_verifier,
-                          NULL,           // channel_id_store
-                          NULL,           // transport_security_state
-                          NULL,           // cert_transparency_verifier
+                          nullptr,           // channel_id_store
+                          nullptr,           // transport_security_state
+                          nullptr,           // cert_transparency_verifier
                           std::string(),  // ssl_session_cache_shard
-                          NULL,           // deterministic_socket_factory
-                          NULL,           // transport_socket_pool
-                          NULL,
-                          NULL,
-                          NULL,   // ssl_config_service
+                          nullptr,           // deterministic_socket_factory
+                          nullptr,           // transport_socket_pool
+                          nullptr,
+                          nullptr,
+                          nullptr,   // ssl_config_service
                           false,  // enable_ssl_connect_job_waiting
-                          NULL),  // net_log
+                          nullptr),  // net_log
       last_num_streams_(-1) {
 }
 
@@ -659,9 +661,9 @@
 int GetSocketPoolGroupCount(ClientSocketPool* pool) {
   int count = 0;
   scoped_ptr<base::DictionaryValue> dict(pool->GetInfoAsValue("", "", false));
-  EXPECT_TRUE(dict != NULL);
-  base::DictionaryValue* groups = NULL;
-  if (dict->GetDictionary("groups", &groups) && (groups != NULL)) {
+  EXPECT_TRUE(dict != nullptr);
+  base::DictionaryValue* groups = nullptr;
+  if (dict->GetDictionary("groups", &groups) && (groups != nullptr)) {
     count = static_cast<int>(groups->size());
   }
   return count;
@@ -778,8 +780,8 @@
           BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  ASSERT_TRUE(NULL != waiter.stream());
-  EXPECT_TRUE(NULL == waiter.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter.stream());
+  EXPECT_TRUE(nullptr == waiter.websocket_stream());
   EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream());
 
   EXPECT_EQ(1, GetSocketPoolGroupCount(
@@ -799,7 +801,7 @@
       GetParam(), ProxyService::CreateDirect());
 
   MockRead mock_read(ASYNC, OK);
-  StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0);
+  StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
   socket_data.set_connect_data(MockConnect(ASYNC, OK));
   session_deps.socket_factory->AddSocketDataProvider(&socket_data);
 
@@ -827,8 +829,8 @@
           BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  ASSERT_TRUE(NULL != waiter.stream());
-  EXPECT_TRUE(NULL == waiter.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter.stream());
+  EXPECT_TRUE(nullptr == waiter.websocket_stream());
   EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream());
   EXPECT_EQ(1, GetSocketPoolGroupCount(
       session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
@@ -872,8 +874,8 @@
           BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  ASSERT_TRUE(NULL != waiter.stream());
-  EXPECT_TRUE(NULL == waiter.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter.stream());
+  EXPECT_TRUE(nullptr == waiter.websocket_stream());
   EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream());
   EXPECT_EQ(0, GetSocketPoolGroupCount(
       session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
@@ -925,8 +927,8 @@
                                             BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  EXPECT_TRUE(NULL == waiter.stream());
-  ASSERT_TRUE(NULL != waiter.websocket_stream());
+  EXPECT_TRUE(nullptr == waiter.stream());
+  ASSERT_TRUE(nullptr != waiter.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
             waiter.websocket_stream()->type());
   EXPECT_EQ(0, GetSocketPoolGroupCount(
@@ -943,7 +945,7 @@
       GetParam(), ProxyService::CreateDirect());
 
   MockRead mock_read(ASYNC, OK);
-  StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0);
+  StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
   socket_data.set_connect_data(MockConnect(ASYNC, OK));
   session_deps.socket_factory->AddSocketDataProvider(&socket_data);
 
@@ -973,8 +975,8 @@
                                             BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  EXPECT_TRUE(NULL == waiter.stream());
-  ASSERT_TRUE(NULL != waiter.websocket_stream());
+  EXPECT_TRUE(nullptr == waiter.stream());
+  ASSERT_TRUE(nullptr != waiter.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
             waiter.websocket_stream()->type());
   EXPECT_EQ(0, GetSocketPoolGroupCount(
@@ -1018,8 +1020,8 @@
                                             BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  EXPECT_TRUE(NULL == waiter.stream());
-  ASSERT_TRUE(NULL != waiter.websocket_stream());
+  EXPECT_TRUE(nullptr == waiter.stream());
+  ASSERT_TRUE(nullptr != waiter.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
             waiter.websocket_stream()->type());
   EXPECT_EQ(0, GetSocketPoolGroupCount(
@@ -1047,7 +1049,7 @@
                                        ProxyService::CreateDirect());
 
   MockRead mock_read(ASYNC, OK);
-  DeterministicSocketData socket_data(&mock_read, 1, NULL, 0);
+  DeterministicSocketData socket_data(&mock_read, 1, nullptr, 0);
   socket_data.set_connect_data(MockConnect(ASYNC, OK));
   session_deps.deterministic_socket_factory->AddSocketDataProvider(
       &socket_data);
@@ -1080,8 +1082,8 @@
           BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  EXPECT_TRUE(NULL == waiter.websocket_stream());
-  ASSERT_TRUE(NULL != waiter.stream());
+  EXPECT_TRUE(nullptr == waiter.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter.stream());
   EXPECT_TRUE(waiter.stream()->IsSpdyHttpStream());
   EXPECT_EQ(1, GetSocketPoolGroupCount(
       session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
@@ -1103,7 +1105,7 @@
                                        ProxyService::CreateDirect());
 
   MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING);
-  StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0);
+  StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
   socket_data.set_connect_data(MockConnect(ASYNC, OK));
   session_deps.socket_factory->AddSocketDataProvider(&socket_data);
 
@@ -1134,10 +1136,10 @@
                                             BoundNetLog()));
   waiter1.WaitForStream();
   EXPECT_TRUE(waiter1.stream_done());
-  ASSERT_TRUE(NULL != waiter1.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter1.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
             waiter1.websocket_stream()->type());
-  EXPECT_TRUE(NULL == waiter1.stream());
+  EXPECT_TRUE(nullptr == waiter1.stream());
 
   EXPECT_EQ(0, GetSocketPoolGroupCount(
       session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
@@ -1154,7 +1156,7 @@
                                        ProxyService::CreateDirect());
 
   MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING);
-  StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0);
+  StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
   socket_data.set_connect_data(MockConnect(ASYNC, OK));
   session_deps.socket_factory->AddSocketDataProvider(&socket_data);
 
@@ -1186,10 +1188,10 @@
                                             BoundNetLog()));
   waiter1.WaitForStream();
   EXPECT_TRUE(waiter1.stream_done());
-  ASSERT_TRUE(NULL != waiter1.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter1.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy,
             waiter1.websocket_stream()->type());
-  EXPECT_TRUE(NULL == waiter1.stream());
+  EXPECT_TRUE(nullptr == waiter1.stream());
 
   StreamRequestWaiter waiter2;
   scoped_ptr<HttpStreamRequest> request2(
@@ -1203,10 +1205,10 @@
                                             BoundNetLog()));
   waiter2.WaitForStream();
   EXPECT_TRUE(waiter2.stream_done());
-  ASSERT_TRUE(NULL != waiter2.websocket_stream());
+  ASSERT_TRUE(nullptr != waiter2.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy,
             waiter2.websocket_stream()->type());
-  EXPECT_TRUE(NULL == waiter2.stream());
+  EXPECT_TRUE(nullptr == waiter2.stream());
   EXPECT_NE(waiter2.websocket_stream(), waiter1.websocket_stream());
   EXPECT_EQ(static_cast<WebSocketSpdyHandshakeStream*>(
                 waiter2.websocket_stream())->spdy_session(),
@@ -1232,13 +1234,13 @@
   session_deps.use_alternate_protocols = true;
 
   MockRead mock_read(ASYNC, OK);
-  DeterministicSocketData socket_data(&mock_read, 1, NULL, 0);
+  DeterministicSocketData socket_data(&mock_read, 1, nullptr, 0);
   socket_data.set_connect_data(MockConnect(ASYNC, OK));
   session_deps.deterministic_socket_factory->AddSocketDataProvider(
       &socket_data);
 
   MockRead mock_read2(ASYNC, OK);
-  DeterministicSocketData socket_data2(&mock_read2, 1, NULL, 0);
+  DeterministicSocketData socket_data2(&mock_read2, 1, nullptr, 0);
   socket_data2.set_connect_data(MockConnect(ASYNC, ERR_IO_PENDING));
   session_deps.deterministic_socket_factory->AddSocketDataProvider(
       &socket_data2);
@@ -1278,8 +1280,8 @@
                                             BoundNetLog()));
   waiter.WaitForStream();
   EXPECT_TRUE(waiter.stream_done());
-  EXPECT_TRUE(NULL == waiter.stream());
-  ASSERT_TRUE(NULL != waiter.websocket_stream());
+  EXPECT_TRUE(nullptr == waiter.stream());
+  ASSERT_TRUE(nullptr != waiter.websocket_stream());
   EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy,
             waiter.websocket_stream()->type());
 
diff --git a/net/http/http_util.cc b/net/http/http_util.cc
index 4574c7f..9bdc045 100644
--- a/net/http/http_util.cc
+++ b/net/http/http_util.cc
@@ -275,6 +275,29 @@
 }
 
 // static
+bool HttpUtil::ParseRetryAfterHeader(const std::string& retry_after_string,
+                                     base::Time now,
+                                     base::TimeDelta* retry_after) {
+  int seconds;
+  base::Time time;
+  base::TimeDelta interval;
+
+  if (base::StringToInt(retry_after_string, &seconds)) {
+    interval = base::TimeDelta::FromSeconds(seconds);
+  } else if (base::Time::FromUTCString(retry_after_string.c_str(), &time)) {
+    interval = time - now;
+  } else {
+    return false;
+  }
+
+  if (interval < base::TimeDelta::FromSeconds(0))
+    return false;
+
+  *retry_after = interval;
+  return true;
+}
+
+// static
 bool HttpUtil::HasHeader(const std::string& headers, const char* name) {
   size_t name_len = strlen(name);
   std::string::const_iterator it =
diff --git a/net/http/http_util.h b/net/http/http_util.h
index bde65dc..211e634 100644
--- a/net/http/http_util.h
+++ b/net/http/http_util.h
@@ -10,6 +10,7 @@
 
 #include "base/memory/ref_counted.h"
 #include "base/strings/string_tokenizer.h"
+#include "base/time/time.h"
 #include "net/base/net_export.h"
 #include "net/http/http_byte_range.h"
 #include "net/http/http_version.h"
@@ -66,6 +67,15 @@
   static bool ParseRangeHeader(const std::string& range_specifier,
                                std::vector<HttpByteRange>* ranges);
 
+  // Parses a Retry-After header that is either an absolute date/time or a
+  // number of seconds in the future. Interprets absolute times as relative to
+  // |now|. If |retry_after_string| is successfully parsed and indicates a time
+  // that is not in the past, fills in |*retry_after| and returns true;
+  // otherwise, returns false.
+  static bool ParseRetryAfterHeader(const std::string& retry_after_string,
+                                    base::Time now,
+                                    base::TimeDelta* retry_after);
+
   // Scans the '\r\n'-delimited headers for the given header name.  Returns
   // true if a match is found.  Input is assumed to be well-formed.
   // TODO(darin): kill this
diff --git a/net/http/http_util_unittest.cc b/net/http/http_util_unittest.cc
index acb2693..e20bbdc 100644
--- a/net/http/http_util_unittest.cc
+++ b/net/http/http_util_unittest.cc
@@ -872,6 +872,49 @@
   }
 }
 
+TEST(HttpUtilTest, ParseRetryAfterHeader) {
+  base::Time::Exploded now_exploded = { 2014, 11, -1, 5, 22, 39, 30, 0 };
+  base::Time now = base::Time::FromUTCExploded(now_exploded);
+
+  base::Time::Exploded later_exploded = { 2015, 1, -1, 1, 12, 34, 56, 0 };
+  base::Time later = base::Time::FromUTCExploded(later_exploded);
+
+  const struct {
+    const char* retry_after_string;
+    bool expected_return_value;
+    base::TimeDelta expected_retry_after;
+  } tests[] = {
+    { "", false, base::TimeDelta() },
+    { "-3", false, base::TimeDelta() },
+    { "-2", false, base::TimeDelta() },
+    { "-1", false, base::TimeDelta() },
+    { "0", true, base::TimeDelta::FromSeconds(0) },
+    { "1", true, base::TimeDelta::FromSeconds(1) },
+    { "2", true, base::TimeDelta::FromSeconds(2) },
+    { "3", true, base::TimeDelta::FromSeconds(3) },
+    { "60", true, base::TimeDelta::FromSeconds(60) },
+    { "3600", true, base::TimeDelta::FromSeconds(3600) },
+    { "86400", true, base::TimeDelta::FromSeconds(86400) },
+    { "Thu, 1 Jan 2015 12:34:56 GMT", true, later - now },
+    { "Mon, 1 Jan 1900 12:34:56 GMT", false, base::TimeDelta() }
+  };
+
+  for (size_t i = 0; i < arraysize(tests); ++i) {
+    base::TimeDelta retry_after;
+    bool return_value = HttpUtil::ParseRetryAfterHeader(
+        tests[i].retry_after_string, now, &retry_after);
+    EXPECT_EQ(tests[i].expected_return_value, return_value)
+        << "Test case " << i << ": expected " << tests[i].expected_return_value
+        << " but got " << return_value << ".";
+    if (tests[i].expected_return_value && return_value) {
+      EXPECT_EQ(tests[i].expected_retry_after, retry_after)
+          << "Test case " << i << ": expected "
+          << tests[i].expected_retry_after.InSeconds() << "s but got "
+          << retry_after.InSeconds() << "s.";
+    }
+  }
+}
+
 namespace {
 void CheckCurrentNameValuePair(HttpUtil::NameValuePairsIterator* parser,
                                bool expect_valid,
diff --git a/net/http/transport_security_state_static.h b/net/http/transport_security_state_static.h
index 27a21df..e757950 100644
--- a/net/http/transport_security_state_static.h
+++ b/net/http/transport_security_state_static.h
@@ -960,1235 +960,1234 @@
   0xe0, 0x2e, 0x5f, 0xdf, 0x09, 0x51, 0x89, 0xfe,
   0xeb, 0x30, 0xa6, 0x10, 0xde, 0x29, 0x11, 0xfb,
   0x39, 0xf1, 0x08, 0x0e, 0x67, 0xfe, 0xb7, 0x96,
-  0xf6, 0xed, 0x79, 0xf0, 0x1d, 0x3f, 0xff, 0xaf,
-  0x7e, 0x7d, 0x73, 0xea, 0xce, 0xcb, 0xdd, 0x58,
-  0x74, 0xff, 0xf6, 0x52, 0xfb, 0xe9, 0x43, 0xad,
-  0xcc, 0xf5, 0x4e, 0x9a, 0xce, 0xc4, 0x7b, 0x79,
-  0x17, 0xeb, 0xd0, 0xe4, 0xea, 0x16, 0x36, 0xd9,
-  0xfc, 0xec, 0x14, 0xee, 0x43, 0x45, 0x9b, 0x3f,
-  0xf9, 0xcc, 0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1,
-  0x40, 0x4f, 0xef, 0xe5, 0xc1, 0xbf, 0xed, 0x1d,
-  0x36, 0xea, 0x9d, 0x3c, 0x9d, 0xc8, 0x68, 0xb7,
-  0xe7, 0xed, 0xf7, 0xe4, 0xe1, 0x3a, 0x04, 0xf5,
-  0xc0, 0x57, 0x3e, 0xbb, 0xeb, 0xbe, 0xa7, 0x4f,
-  0xe5, 0x6d, 0xbe, 0xff, 0x50, 0x1d, 0x3d, 0xde,
-  0xfd, 0xce, 0x9f, 0xda, 0x53, 0x55, 0x4c, 0x61,
-  0xd3, 0xbf, 0x8f, 0x3a, 0x4e, 0x54, 0xe5, 0x5e,
-  0x6d, 0x8d, 0xe2, 0x43, 0x62, 0xa0, 0x1b, 0x7c,
-  0x86, 0xe6, 0x73, 0xfe, 0xe7, 0xbb, 0x05, 0x3b,
-  0x90, 0xd1, 0x4a, 0x4f, 0xf3, 0xdd, 0x82, 0x9d,
-  0xc8, 0x68, 0x93, 0xa4, 0xe6, 0x22, 0x1f, 0x91,
-  0xa1, 0x5d, 0xc9, 0x25, 0x11, 0x91, 0x6d, 0x6b,
-  0x54, 0x72, 0x3a, 0x74, 0x85, 0x8f, 0x89, 0xf5,
-  0x70, 0xac, 0x68, 0x99, 0x92, 0xfc, 0x6c, 0x52,
-  0x03, 0xba, 0xc7, 0xce, 0xda, 0x1f, 0x93, 0xe1,
-  0x4e, 0xe4, 0x34, 0x43, 0xf3, 0xfe, 0xe7, 0xbb,
-  0x05, 0x3b, 0x90, 0xd1, 0x29, 0xc9, 0xd8, 0x7e,
-  0xcc, 0x30, 0x9f, 0xce, 0xc1, 0x4e, 0xe4, 0x34,
-  0x44, 0xf3, 0xf9, 0xd8, 0x29, 0xdc, 0x86, 0x88,
-  0xc6, 0x7f, 0xf3, 0x99, 0xcf, 0x76, 0x0a, 0x77,
-  0x21, 0xa2, 0x79, 0x85, 0x47, 0x7d, 0x04, 0xef,
-  0x3b, 0xb1, 0xdc, 0xf8, 0x53, 0xb9, 0x0d, 0x11,
-  0x04, 0xff, 0xb9, 0xee, 0xc1, 0x4e, 0xe4, 0x34,
-  0x4a, 0x92, 0x76, 0x1f, 0xb3, 0x0c, 0x27, 0xf3,
-  0xb0, 0x53, 0xb9, 0x0d, 0x11, 0x44, 0xfe, 0x76,
-  0x0a, 0x77, 0x21, 0xa2, 0x32, 0x9f, 0xfc, 0xe6,
-  0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68, 0x99, 0x67,
-  0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x15, 0x24, 0xfe,
-  0x76, 0x0a, 0x77, 0x21, 0xa2, 0xba, 0x9f, 0xce,
-  0xc1, 0x4e, 0xe4, 0x34, 0x58, 0xb3, 0xff, 0x33,
-  0x9e, 0xec, 0x14, 0xee, 0x43, 0x44, 0xf5, 0x3f,
-  0xc1, 0x77, 0x2f, 0xb5, 0x3c, 0xde, 0x74, 0x39,
-  0x11, 0x4a, 0x99, 0x3f, 0x6a, 0xbb, 0x2f, 0xed,
-  0x2a, 0x74, 0xf0, 0xb2, 0xf4, 0x9d, 0x39, 0x32,
-  0xc5, 0x4f, 0xff, 0xd6, 0xff, 0x6b, 0xf0, 0xab,
-  0xdf, 0x95, 0x00, 0x14, 0xe9, 0xff, 0xf8, 0x7c,
-  0xdf, 0xcc, 0x72, 0x88, 0xf9, 0xbd, 0x34, 0xa0,
-  0xe9, 0xf2, 0x7a, 0xdb, 0xd8, 0x74, 0xff, 0xee,
-  0xaf, 0xf0, 0x0e, 0xb7, 0x93, 0x84, 0xe9, 0xf5,
-  0xec, 0xac, 0x43, 0xa7, 0xff, 0x7f, 0x72, 0xaf,
-  0xd5, 0x9b, 0xb7, 0x5b, 0x50, 0xe9, 0xba, 0x93,
-  0xa7, 0xf7, 0x57, 0xad, 0xa7, 0xe8, 0x3a, 0x3e,
-  0x79, 0x5a, 0x0b, 0x47, 0x95, 0x08, 0x0a, 0xdb,
-  0x18, 0x2c, 0x53, 0xf4, 0x7b, 0x93, 0x37, 0xc2,
-  0x72, 0x77, 0xfa, 0xe6, 0xa8, 0x5a, 0x77, 0xfd,
-  0x53, 0xa4, 0x1d, 0x50, 0xf1, 0x14, 0xa2, 0x78,
-  0x5b, 0x73, 0x0e, 0x8c, 0x3c, 0xef, 0x16, 0x4f,
-  0xfb, 0xd6, 0xeb, 0xab, 0x55, 0xf3, 0x0e, 0x9f,
-  0xbd, 0xfd, 0x7e, 0xca, 0x9d, 0x3d, 0xfd, 0xb7,
-  0x6b, 0x3a, 0x7e, 0xca, 0x87, 0xbf, 0x41, 0xd1,
-  0xc7, 0xa9, 0xf2, 0x79, 0xf6, 0x9a, 0xeb, 0xb2,
-  0x9d, 0x18, 0x8c, 0xff, 0x42, 0x0e, 0xc4, 0x33,
-  0xff, 0xff, 0xac, 0xbe, 0x11, 0x5d, 0xf7, 0xf7,
-  0xf4, 0x7e, 0x57, 0x6d, 0x38, 0x5e, 0x74, 0xfa,
-  0x8d, 0x87, 0xc1, 0x3a, 0x7e, 0xdb, 0x84, 0x1a,
-  0x98, 0x74, 0xff, 0xbf, 0xe7, 0xde, 0xd8, 0x3e,
-  0xa9, 0xd3, 0xfe, 0xec, 0x02, 0xff, 0xb6, 0xcd,
-  0x67, 0x43, 0xcf, 0xf0, 0x07, 0xd3, 0xff, 0x97,
-  0x29, 0xbd, 0x96, 0xff, 0x50, 0x54, 0xe9, 0xd5,
-  0xb3, 0x0e, 0x8b, 0x9f, 0x2e, 0x89, 0x33, 0xf6,
-  0x95, 0xbd, 0x72, 0xe7, 0x4e, 0x08, 0x42, 0x54,
-  0xff, 0xeb, 0xfa, 0xf5, 0xb7, 0xb5, 0x37, 0x8a,
-  0xbc, 0xa7, 0x17, 0x91, 0xe4, 0x54, 0x68, 0x95,
-  0x0f, 0x55, 0x89, 0x8f, 0x5e, 0x29, 0x18, 0x55,
-  0xfe, 0x10, 0xf7, 0x86, 0x5c, 0xda, 0xf0, 0xe9,
-  0xf0, 0x6e, 0xb4, 0x84, 0xe9, 0xfc, 0xbc, 0x36,
-  0x0f, 0x6c, 0x54, 0xc1, 0x09, 0x51, 0xb1, 0xe3,
-  0x84, 0xc6, 0x7a, 0xb7, 0xf6, 0xac, 0xa7, 0x1a,
-  0x39, 0xff, 0xda, 0x56, 0xbb, 0x7d, 0x76, 0xb2,
-  0xde, 0xa7, 0x4f, 0xfa, 0xfe, 0x1e, 0x03, 0x7d,
-  0xf2, 0xc7, 0x43, 0xd1, 0x1b, 0xe4, 0xd9, 0xf6,
-  0x51, 0x9e, 0x13, 0xa7, 0xeb, 0xa8, 0xed, 0x9f,
-  0x3a, 0x7f, 0x6d, 0x65, 0xf8, 0x7a, 0x93, 0xa7,
-  0xff, 0xfd, 0xe6, 0x77, 0xe9, 0x7b, 0x83, 0x9e,
-  0x6d, 0x9f, 0xcd, 0xb9, 0xe7, 0x8b, 0xd6, 0x15,
-  0x1b, 0x9c, 0x59, 0xa1, 0xa4, 0xff, 0xf6, 0x5e,
-  0xb8, 0xd5, 0x95, 0xb6, 0x5a, 0xca, 0x74, 0xff,
-  0xff, 0xfb, 0xd9, 0x4d, 0x7d, 0x81, 0xdd, 0x94,
-  0xbe, 0xbe, 0xbd, 0x7d, 0x4e, 0xdb, 0x69, 0x41,
-  0xd1, 0xf4, 0x6f, 0x5d, 0x42, 0x6f, 0x04, 0xe9,
-  0xb7, 0x80, 0xe8, 0x68, 0xd7, 0x00, 0x5a, 0x73,
-  0xfb, 0x63, 0xa6, 0x08, 0x4e, 0x8f, 0x1e, 0xa5,
-  0x48, 0x82, 0x39, 0x3a, 0xfb, 0xc0, 0x53, 0x8d,
-  0x7c, 0xff, 0xff, 0xeb, 0xae, 0xd6, 0xd3, 0xb5,
-  0xb3, 0xb6, 0xcc, 0xfe, 0xba, 0xd7, 0x3e, 0x03,
-  0xa2, 0x94, 0x55, 0xf8, 0xba, 0x7f, 0xb2, 0xf6,
-  0x51, 0xbe, 0x21, 0xd3, 0x94, 0x5a, 0x3a, 0x31,
-  0x3f, 0x3e, 0x8d, 0xff, 0xe4, 0x9a, 0x86, 0xb3,
-  0xef, 0xe5, 0xf9, 0xbc, 0xe9, 0xff, 0xb0, 0x47,
-  0x1a, 0xb6, 0x57, 0xbe, 0x74, 0xfe, 0xfa, 0x8e,
-  0x89, 0x65, 0x3a, 0x7d, 0xed, 0x76, 0xe7, 0x9d,
-  0x3f, 0x79, 0x59, 0x46, 0x04, 0xe9, 0x82, 0x13,
-  0xa1, 0x0f, 0xb0, 0x4a, 0x42, 0x5b, 0x3f, 0xd8,
-  0xd7, 0x35, 0xd4, 0xbe, 0xa5, 0x38, 0xd6, 0xcf,
-  0xfe, 0xcf, 0x83, 0x2d, 0xea, 0x6b, 0x6d, 0x2a,
-  0x74, 0xfd, 0xfe, 0x06, 0xd9, 0xf3, 0xa7, 0xe6,
-  0x7b, 0x53, 0x07, 0x59, 0xd3, 0x82, 0x10, 0x95,
-  0x3f, 0xf2, 0x8f, 0xf4, 0xed, 0xf8, 0xd2, 0xb0,
-  0xe7, 0x17, 0x91, 0xab, 0x54, 0x5c, 0xd4, 0x32,
-  0xaa, 0x95, 0x74, 0xcd, 0x0b, 0x42, 0x9b, 0x3b,
-  0x86, 0x83, 0xc8, 0x25, 0x3c, 0xfc, 0xa5, 0xe7,
-  0x90, 0x4a, 0x75, 0x7d, 0xb1, 0xe4, 0x12, 0x98,
-  0x21, 0x3c, 0x82, 0x50, 0x88, 0xa4, 0x68, 0xa2,
-  0xe5, 0xe1, 0x2a, 0x9b, 0xae, 0x59, 0x04, 0x9c,
-  0x6f, 0x67, 0xec, 0xb6, 0x67, 0xf5, 0x9d, 0x3b,
-  0xbe, 0x0f, 0x9e, 0xfd, 0xcc, 0xa7, 0xb5, 0x33,
-  0xac, 0x74, 0xb3, 0x56, 0x7a, 0xc0, 0x33, 0x9f,
-  0xcd, 0x3f, 0x4a, 0x2f, 0xea, 0x0a, 0x9f, 0xde,
-  0x7e, 0x9d, 0x5b, 0x78, 0xe9, 0x3c, 0xa9, 0xdc,
-  0x34, 0x15, 0x05, 0x42, 0x9b, 0x54, 0x10, 0x60,
-  0xdc, 0xf7, 0xd4, 0x08, 0x53, 0x8d, 0x64, 0x2a,
-  0x31, 0x72, 0x12, 0xb3, 0xda, 0x70, 0xbc, 0xe9,
-  0x30, 0xe9, 0xb1, 0xfb, 0x1b, 0x16, 0x88, 0x67,
-  0xc1, 0xc6, 0xbc, 0xc3, 0xa7, 0xe4, 0x56, 0x9e,
-  0xa0, 0x2a, 0x5e, 0x3a, 0x7f, 0xa8, 0xd1, 0xfb,
-  0x5b, 0x4e, 0xf9, 0xd3, 0xf7, 0x95, 0x94, 0x60,
-  0x4e, 0x9f, 0x65, 0x0c, 0xc6, 0x1d, 0x3a, 0xbe,
-  0x13, 0xa3, 0xe7, 0x85, 0x72, 0x79, 0xfb, 0xfc,
-  0x00, 0x69, 0x53, 0xa7, 0xef, 0x6b, 0xde, 0xac,
-  0x76, 0xc9, 0x86, 0x60, 0x80, 0x9e, 0xd5, 0xbe,
-  0xe4, 0x51, 0x89, 0xe8, 0xf8, 0xa3, 0xf1, 0x9c,
-  0x4f, 0x7f, 0x28, 0xd0, 0xe8, 0x7a, 0xbd, 0x7c,
-  0x2b, 0xb4, 0x3f, 0x7e, 0xaf, 0x58, 0xff, 0xee,
-  0x6d, 0x3f, 0xfe, 0xa0, 0x47, 0x36, 0xe6, 0x5b,
-  0xaf, 0xf5, 0x68, 0xe9, 0xc1, 0x08, 0x4a, 0x99,
-  0xea, 0x53, 0x8b, 0xc8, 0x54, 0x4a, 0x8b, 0x8c,
-  0xfd, 0x43, 0x4f, 0x6e, 0x0d, 0x07, 0x4f, 0x5b,
-  0xa9, 0x09, 0xd3, 0xea, 0x07, 0xca, 0xc3, 0xa7,
-  0xff, 0x97, 0x7d, 0xfe, 0xa0, 0xeb, 0x83, 0x7f,
-  0xde, 0x74, 0x6a, 0xa4, 0x68, 0x78, 0xd3, 0x88,
-  0xae, 0x4f, 0x39, 0xfe, 0xf9, 0xd3, 0xf5, 0xd5,
-  0xaf, 0xe9, 0x53, 0xa1, 0xe7, 0x97, 0x71, 0xc9,
-  0xda, 0x68, 0xdd, 0x9d, 0x37, 0x39, 0xba, 0x37,
-  0x21, 0x1a, 0xac, 0x6d, 0xaa, 0xfc, 0x89, 0x65,
-  0x15, 0x51, 0x0f, 0xf7, 0x90, 0xed, 0x18, 0x76,
-  0x4a, 0xf8, 0xd6, 0xcc, 0x82, 0xfe, 0x84, 0x93,
-  0x50, 0xc3, 0x12, 0x36, 0x46, 0x05, 0x69, 0x60,
-  0x1c, 0x8b, 0xf2, 0x9a, 0xca, 0x6f, 0xbc, 0xee,
-  0x8e, 0x90, 0xf8, 0xd4, 0x87, 0x8e, 0xf8, 0x46,
-  0xb7, 0x91, 0x4f, 0xfe, 0x73, 0x39, 0xee, 0xc1,
-  0x4e, 0xe4, 0x34, 0x51, 0x53, 0xf9, 0xd8, 0x29,
-  0xdc, 0x86, 0x8b, 0xa2, 0x7f, 0xe7, 0x73, 0xdd,
-  0x82, 0x9d, 0xc8, 0x68, 0x92, 0xe7, 0xf3, 0xb0,
-  0x53, 0xb9, 0x0d, 0x17, 0x94, 0x2b, 0x7c, 0x35,
-  0x41, 0x3b, 0xce, 0xf0, 0xed, 0x14, 0x9a, 0x3b,
-  0x61, 0xdd, 0xa1, 0x8b, 0xfa, 0xe4, 0xaa, 0xb1,
-  0xd9, 0x5d, 0x4b, 0x43, 0xb6, 0xc9, 0x93, 0xff,
-  0x9c, 0xce, 0x7b, 0xb0, 0x53, 0xb9, 0x0d, 0x12,
-  0xcc, 0xf2, 0x77, 0x21, 0xa2, 0x33, 0x9f, 0xbc,
-  0xac, 0xa3, 0x02, 0x74, 0xdf, 0x79, 0xd2, 0x61,
-  0xd3, 0xef, 0x0d, 0xb9, 0xc2, 0x7a, 0x6c, 0x2d,
-  0xde, 0x2d, 0x3f, 0x73, 0xfc, 0x3c, 0x27, 0x4e,
-  0xaa, 0xd2, 0x74, 0x0a, 0x62, 0x0c, 0x7e, 0xfa,
-  0x65, 0xca, 0xa7, 0xfe, 0xbf, 0x87, 0x81, 0xba,
-  0x97, 0xab, 0x0e, 0x9f, 0x7d, 0x5f, 0x5e, 0x3a,
-  0x3c, 0x7d, 0x8d, 0x91, 0xa7, 0xff, 0xef, 0x6d,
-  0xa5, 0xeb, 0x4b, 0xd7, 0xe0, 0xae, 0xed, 0x3e,
-  0x74, 0xff, 0xd8, 0xcb, 0xf8, 0x35, 0x5b, 0x76,
-  0xac, 0xe9, 0xff, 0x59, 0x7d, 0x6f, 0x2f, 0xda,
-  0xd0, 0xe9, 0x3b, 0x13, 0xb7, 0x6a, 0x15, 0x3c,
-  0x49, 0xf6, 0x3a, 0xa3, 0xcf, 0xfe, 0x73, 0x39,
-  0xee, 0xc1, 0x4e, 0xe4, 0x34, 0x4d, 0x33, 0xff,
-  0x9c, 0xce, 0x7b, 0xb0, 0x53, 0xb9, 0x0d, 0x13,
-  0x8c, 0xff, 0xe7, 0x33, 0x9e, 0xec, 0x14, 0xee,
-  0x43, 0x45, 0x03, 0x3e, 0x14, 0xee, 0x43, 0x45,
-  0xc1, 0x32, 0xf8, 0xe9, 0xfd, 0xf7, 0xaf, 0xb6,
-  0xc6, 0x1d, 0x27, 0x61, 0xfc, 0x58, 0xc3, 0x41,
-  0x59, 0xfd, 0xe7, 0x6f, 0x50, 0x60, 0x4e, 0x9f,
-  0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x24, 0xc9,
-  0xd6, 0x3f, 0x5e, 0x34, 0x8a, 0x17, 0x6b, 0x5f,
-  0x2c, 0x65, 0x15, 0x5a, 0x52, 0x02, 0x95, 0x61,
-  0x95, 0x78, 0x55, 0x4f, 0xfb, 0x5f, 0x3b, 0x05,
-  0x3b, 0x90, 0xd1, 0x6a, 0x4f, 0xfb, 0x9e, 0xec,
-  0x14, 0xee, 0x43, 0x44, 0xab, 0x07, 0x49, 0xda,
-  0xd1, 0x30, 0xc4, 0x86, 0xf4, 0x69, 0xfc, 0xec,
-  0x14, 0xee, 0x43, 0x44, 0x53, 0x3f, 0x9d, 0x82,
-  0x9d, 0xc8, 0x68, 0x8d, 0x27, 0xf3, 0xb0, 0x53,
-  0xb9, 0x0d, 0x14, 0xfc, 0xff, 0xe7, 0x33, 0x9e,
-  0xec, 0x14, 0xee, 0x43, 0x44, 0xd5, 0x3f, 0x9d,
-  0x82, 0x9d, 0xc8, 0x68, 0xae, 0xe7, 0x93, 0xb9,
-  0x0d, 0x15, 0xf4, 0xe0, 0x84, 0x25, 0x4b, 0xe5,
-  0x38, 0xbc, 0x81, 0x3e, 0x66, 0x23, 0xce, 0x7a,
-  0xd2, 0x74, 0xff, 0xb2, 0xc1, 0xeb, 0xd5, 0x72,
-  0x83, 0xa7, 0xfd, 0xde, 0x1c, 0xa3, 0xcf, 0xcd,
-  0x8e, 0x93, 0xb1, 0x17, 0x0d, 0x10, 0xfc, 0x72,
-  0xa7, 0xb3, 0xff, 0x9c, 0xce, 0x7b, 0xb0, 0x53,
-  0xb9, 0x0d, 0x13, 0xdc, 0xfe, 0x76, 0x0a, 0x77,
-  0x21, 0xa2, 0xe1, 0x9f, 0xf9, 0xdc, 0xf7, 0x60,
-  0xa7, 0x72, 0x1a, 0x24, 0xf8, 0x55, 0x76, 0x74,
-  0x1d, 0xbc, 0xef, 0x59, 0xda, 0x1d, 0xb4, 0xa4,
-  0x31, 0xac, 0xd9, 0x0e, 0xaa, 0x4d, 0x8e, 0xe7,
-  0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x11, 0x54, 0xfe,
-  0x76, 0x0a, 0x77, 0x21, 0xa2, 0x99, 0x9f, 0xfc,
-  0xe6, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68, 0x99,
-  0xe7, 0xff, 0x39, 0x9c, 0xf7, 0x60, 0xa7, 0x72,
-  0x1a, 0x28, 0xd8, 0xa1, 0x31, 0xad, 0x8e, 0xf5,
-  0x9d, 0xdd, 0x4a, 0x7f, 0xe7, 0x73, 0xdd, 0x82,
-  0x9d, 0xc8, 0x68, 0x8e, 0xa7, 0xef, 0x67, 0xf6,
-  0xca, 0x0e, 0x9f, 0x0a, 0x77, 0x21, 0xa2, 0x9a,
-  0x9f, 0xbc, 0xac, 0xa3, 0x02, 0x74, 0xff, 0xf6,
-  0x5e, 0xd8, 0xf1, 0xef, 0xde, 0xdc, 0xf3, 0xa6,
-  0x50, 0x1d, 0x3f, 0xd5, 0xea, 0x55, 0x3c, 0x8e,
-  0x14, 0x47, 0xfc, 0xb7, 0x7a, 0x6c, 0x9d, 0xb2,
-  0x69, 0x78, 0x5d, 0x78, 0x5f, 0xcf, 0x85, 0x3b,
-  0x90, 0xd1, 0x55, 0x4f, 0xfb, 0x9e, 0xec, 0x14,
-  0xee, 0x43, 0x44, 0xdb, 0x27, 0x61, 0xfb, 0x30,
-  0xc2, 0x7f, 0x3b, 0x05, 0x3b, 0x90, 0xd1, 0x5f,
-  0xcf, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x2c, 0x69,
-  0xf0, 0xa7, 0x72, 0x1a, 0x2d, 0x59, 0xff, 0x73,
-  0xdd, 0x82, 0x9d, 0xc8, 0x68, 0xa0, 0xa4, 0xec,
-  0x3f, 0x66, 0x18, 0x4f, 0xe7, 0x60, 0xa7, 0x72,
-  0x1a, 0x2e, 0x29, 0xfc, 0xec, 0x14, 0xee, 0x43,
-  0x45, 0xd3, 0x3f, 0xff, 0x96, 0xdf, 0xd3, 0xb5,
-  0x78, 0xfb, 0x66, 0xbc, 0xd9, 0xad, 0x0e, 0x9f,
-  0xf3, 0xf0, 0x47, 0x9f, 0x46, 0x04, 0xe9, 0xdf,
-  0xe7, 0x0a, 0x29, 0x6e, 0xd3, 0x3f, 0xe1, 0x5a,
-  0x6d, 0xd5, 0xba, 0x84, 0xe9, 0xfb, 0x54, 0xfe,
-  0x5b, 0xae, 0x74, 0xfc, 0x0e, 0x69, 0xfe, 0xb9,
-  0xd3, 0xff, 0xfe, 0xd6, 0xbb, 0x5b, 0x29, 0xbf,
-  0xfa, 0xc0, 0xea, 0xd7, 0x85, 0x0e, 0x9e, 0x4e,
-  0xe4, 0x34, 0x49, 0x93, 0xfc, 0x39, 0x4d, 0xef,
-  0xcf, 0xa9, 0xd0, 0x27, 0xc6, 0xc2, 0xb9, 0xfb,
-  0x60, 0x6a, 0x95, 0x06, 0xa1, 0xd3, 0xec, 0xbf,
-  0x99, 0xc7, 0x4f, 0xff, 0xb9, 0x05, 0x6d, 0xfc,
-  0xbe, 0x38, 0x21, 0x09, 0x50, 0xf3, 0xf8, 0xb9,
-  0x34, 0xff, 0xed, 0x3f, 0xd7, 0x51, 0xad, 0x97,
-  0xf7, 0x3a, 0x70, 0x42, 0x12, 0xa7, 0xe1, 0xea,
-  0x19, 0xea, 0x94, 0xe2, 0xf2, 0x7d, 0x8c, 0x1c,
-  0xd5, 0x9d, 0x3f, 0xe6, 0x2a, 0x5b, 0xfa, 0x5d,
-  0x6a, 0x74, 0xff, 0x67, 0x03, 0x76, 0x6d, 0xcf,
-  0x3a, 0x7f, 0xf7, 0x51, 0x6f, 0x2f, 0xf1, 0xaf,
-  0x0f, 0x8e, 0x8c, 0x46, 0x0d, 0xcf, 0x82, 0x73,
-  0x3e, 0xfe, 0x5b, 0xae, 0x74, 0xff, 0x9e, 0xbf,
-  0xa3, 0x78, 0xff, 0x47, 0x9d, 0x1a, 0xb3, 0xe8,
-  0x68, 0x9a, 0x7a, 0xf4, 0x66, 0xc7, 0x4f, 0xf7,
-  0xb5, 0xef, 0x10, 0x33, 0xd5, 0x3a, 0x1a, 0x3e,
-  0x0d, 0x42, 0x39, 0xc1, 0x08, 0x4e, 0x9f, 0xff,
-  0x63, 0x2f, 0xf5, 0x06, 0x6d, 0x5c, 0x62, 0xa1,
-  0x4e, 0x2f, 0x23, 0x13, 0x2b, 0xf4, 0x21, 0xec,
-  0x85, 0x3f, 0x59, 0x77, 0x27, 0xa8, 0x3a, 0x7e,
-  0x1e, 0x1f, 0xab, 0xce, 0x8d, 0x8f, 0x64, 0x4b,
-  0xe6, 0x7b, 0x9b, 0x8b, 0xc3, 0xca, 0x62, 0xf2,
-  0xec, 0x86, 0x86, 0xb2, 0x1a, 0x61, 0x5e, 0xd1,
-  0x17, 0x32, 0xfc, 0xf2, 0xb0, 0xea, 0xbc, 0x78,
-  0x5b, 0xe1, 0x1d, 0x3e, 0xc6, 0x0e, 0x6a, 0xce,
-  0x9f, 0xfb, 0x2d, 0xf5, 0xa3, 0x7d, 0xad, 0xda,
-  0xb3, 0xa7, 0xee, 0x47, 0x04, 0x21, 0x3a, 0x4e,
-  0x46, 0x40, 0x10, 0x99, 0xf4, 0xf2, 0xdf, 0xe1,
-  0xab, 0x52, 0x96, 0xc9, 0x50, 0xf6, 0x68, 0x6e,
-  0xd1, 0xcb, 0xd3, 0x0b, 0x21, 0x27, 0x61, 0xd8,
-  0x21, 0x63, 0x52, 0x7b, 0x9d, 0xe9, 0x48, 0xe2,
-  0x9f, 0xce, 0xc1, 0x4e, 0xe4, 0x34, 0x46, 0xb3,
-  0xe1, 0x4e, 0xe4, 0x34, 0x54, 0xb3, 0x72, 0x1a,
-  0x21, 0xa9, 0x3b, 0x0f, 0x47, 0x8c, 0x27, 0xfe,
-  0x77, 0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x88, 0xfa,
-  0x7f, 0x3b, 0x05, 0x3b, 0x90, 0xd1, 0x63, 0xcf,
-  0xda, 0xa7, 0xf2, 0xdd, 0x73, 0xa7, 0xfb, 0xfc,
-  0x0a, 0xf5, 0xef, 0xc7, 0x4f, 0x01, 0x9e, 0x13,
-  0xa7, 0xff, 0xf9, 0x47, 0xf9, 0xb6, 0x5a, 0xde,
-  0x4b, 0x7a, 0xf5, 0xea, 0x4e, 0x8f, 0x22, 0x1e,
-  0xc4, 0x33, 0xbb, 0x90, 0xd1, 0x68, 0x4f, 0xfb,
-  0x82, 0xde, 0x9c, 0x34, 0x60, 0x4e, 0x90, 0xa1,
-  0xf2, 0x89, 0x34, 0xfc, 0xdb, 0x7d, 0xfe, 0xa0,
-  0x3a, 0x7c, 0xb7, 0xcb, 0x29, 0xd3, 0xff, 0xd9,
-  0x7a, 0xe3, 0x56, 0x56, 0xd9, 0x6b, 0x29, 0xd1,
-  0x41, 0xfa, 0xfc, 0x96, 0x15, 0x19, 0x39, 0x0a,
-  0x69, 0xff, 0xb2, 0xbe, 0xd3, 0xef, 0x15, 0xcd,
-  0x8e, 0x9f, 0x5e, 0xdd, 0xfd, 0x67, 0x4f, 0xf7,
-  0xf4, 0xa3, 0x6b, 0x67, 0xd4, 0xe9, 0xbf, 0x98,
-  0x7c, 0x88, 0x53, 0x3f, 0xb2, 0xcd, 0x7a, 0xde,
-  0x61, 0xd3, 0xf9, 0xf8, 0x35, 0xfa, 0xd0, 0x74,
-  0xf6, 0xd9, 0x6e, 0x3a, 0x7f, 0xb3, 0x03, 0x88,
-  0x98, 0x13, 0xa3, 0x11, 0x77, 0x49, 0xa7, 0x19,
-  0x54, 0x86, 0x7b, 0x2d, 0xd7, 0x3a, 0x7f, 0x6b,
-  0xf7, 0xf4, 0x7e, 0x54, 0xe9, 0x39, 0xb8, 0xb9,
-  0x56, 0xa6, 0x3b, 0x42, 0xfb, 0x21, 0x11, 0x68,
-  0x77, 0x7c, 0x9a, 0xb0, 0xa8, 0xbc, 0x39, 0xb5,
-  0x0f, 0x37, 0x90, 0x4f, 0xcd, 0xfe, 0xdb, 0xea,
-  0xd1, 0xd3, 0xd9, 0x6e, 0xb9, 0xd2, 0xd5, 0x30,
-  0xf4, 0xbe, 0x65, 0x3e, 0x14, 0xee, 0x43, 0x45,
-  0xad, 0x3f, 0xee, 0x7b, 0xb0, 0x53, 0xb9, 0x0d,
-  0x14, 0x1c, 0x9c, 0xdc, 0x45, 0x16, 0x16, 0x30,
-  0xc2, 0x7f, 0xf3, 0x99, 0xcf, 0x76, 0x0a, 0x77,
-  0x21, 0xa2, 0x8b, 0x9f, 0xce, 0xc1, 0x4e, 0xe4,
-  0x34, 0x5d, 0x50, 0xf6, 0x42, 0x9a, 0x42, 0x33,
-  0xc4, 0xcc, 0x4c, 0xb4, 0xe7, 0x30, 0x23, 0xa9,
-  0xa9, 0xcd, 0xd4, 0xa7, 0xc2, 0x9d, 0xc8, 0x68,
-  0x88, 0x67, 0x5b, 0x36, 0x3a, 0x4e, 0xc3, 0xcc,
-  0xa4, 0xc2, 0x7f, 0x3b, 0x05, 0x3b, 0x90, 0xd1,
-  0x1b, 0x4f, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x29,
-  0xb9, 0xfc, 0xec, 0x14, 0xee, 0x43, 0x45, 0x41,
-  0x3f, 0x9d, 0x82, 0x9d, 0xc8, 0x68, 0xa9, 0xa7,
-  0xc2, 0x9d, 0xc8, 0x68, 0xac, 0x27, 0xde, 0x0e,
-  0xda, 0x09, 0xd3, 0xfc, 0xf7, 0x60, 0xa7, 0x72,
-  0x1a, 0x23, 0xf9, 0xd8, 0xb4, 0x1d, 0x27, 0x62,
-  0x2d, 0x50, 0xc3, 0x8a, 0x7e, 0x83, 0x3f, 0xf9,
-  0xcc, 0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x37,
-  0xcf, 0xfc, 0xce, 0x7b, 0xb0, 0x53, 0xb9, 0x0d,
-  0x13, 0xf4, 0xfc, 0xdd, 0x75, 0x56, 0xa9, 0xa9,
-  0x94, 0x9d, 0x3f, 0xfc, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xab, 0x4d, 0x4e, 0x9f, 0x0f, 0xa8, 0xe6, 0x15,
-  0x30, 0x42, 0x54, 0x61, 0xbd, 0x09, 0x3c, 0xb4,
-  0x29, 0xc6, 0x82, 0x15, 0x18, 0xf5, 0x85, 0x34,
-  0xfc, 0x3c, 0x96, 0xf0, 0x9d, 0x3d, 0x43, 0x3c,
-  0xf3, 0xa7, 0xd5, 0xfe, 0x9c, 0xf3, 0xa7, 0xf5,
-  0x95, 0x8e, 0x00, 0x14, 0xe9, 0x0a, 0x9f, 0xee,
-  0x11, 0xf8, 0xa2, 0x70, 0x2b, 0x87, 0x4f, 0xfd,
-  0xb2, 0xdf, 0xab, 0x96, 0xb7, 0x98, 0x74, 0xeb,
-  0xf9, 0xa3, 0xa1, 0x4f, 0x86, 0xa8, 0x90, 0xa9,
-  0xce, 0xf8, 0x9c, 0x61, 0x4f, 0xf3, 0x2b, 0xbe,
-  0x4f, 0x73, 0x5b, 0xd8, 0x74, 0xdd, 0xf3, 0xa0,
-  0x4d, 0xcb, 0x09, 0x27, 0x04, 0x21, 0x3a, 0x7a,
-  0x8f, 0xf9, 0x4a, 0x71, 0x79, 0x3d, 0x4d, 0xfc,
-  0x87, 0x42, 0xa2, 0x3e, 0xc7, 0x9a, 0x18, 0xcf,
-  0xfd, 0x46, 0x80, 0xcf, 0xe8, 0xd2, 0xdf, 0x8e,
-  0x9e, 0x5b, 0xd5, 0x0d, 0x10, 0x74, 0xfd, 0xd6,
-  0x5d, 0x5e, 0x8f, 0x3a, 0x05, 0x14, 0xb7, 0x47,
-  0x6c, 0x5b, 0x30, 0xec, 0x74, 0xc1, 0x09, 0xd0,
-  0xf3, 0x58, 0x11, 0x69, 0xea, 0xaf, 0x9b, 0x14,
-  0xe3, 0x43, 0x3e, 0xae, 0xfd, 0x81, 0x53, 0xa3,
-  0xc7, 0xbd, 0xbc, 0xce, 0x70, 0x42, 0x12, 0xa0,
-  0xa7, 0x17, 0x93, 0xde, 0x0f, 0x9a, 0x2a, 0x10,
-  0xde, 0x78, 0x66, 0x3c, 0x9b, 0xc5, 0xa1, 0xb9,
-  0xf7, 0xc9, 0xdf, 0xf5, 0x4e, 0x9e, 0xdb, 0xbe,
-  0x03, 0xa7, 0xfe, 0x5f, 0x83, 0xeb, 0x4b, 0x4b,
-  0xf0, 0x1d, 0x1e, 0x44, 0x18, 0x07, 0x2a, 0x45,
-  0x3f, 0x34, 0xb8, 0x36, 0xf1, 0xd3, 0xf5, 0xf1,
-  0xaf, 0xab, 0x0f, 0x10, 0x14, 0xfb, 0xbf, 0xb5,
-  0x94, 0xd1, 0x01, 0x38, 0xdd, 0x4f, 0x94, 0x1e,
-  0xa6, 0xa7, 0x4f, 0xe1, 0x6a, 0xbe, 0xfd, 0xfc,
-  0x74, 0xf5, 0x20, 0x15, 0x2a, 0x60, 0x84, 0xa8,
-  0x53, 0x6e, 0x12, 0x19, 0xfb, 0x85, 0xef, 0xff,
-  0x8a, 0x71, 0xa0, 0x85, 0x4f, 0x27, 0x0c, 0x3c,
-  0xcd, 0xf4, 0x4b, 0x94, 0x69, 0x08, 0xb9, 0xf6,
-  0x97, 0xd3, 0xb7, 0x9a, 0x20, 0x79, 0xff, 0x5b,
-  0x4a, 0x17, 0x72, 0xdd, 0x76, 0x3a, 0x77, 0x0d,
-  0x07, 0x4c, 0x10, 0x9d, 0x3f, 0x87, 0xd8, 0xdb,
-  0x7b, 0xdc, 0x86, 0xc4, 0x23, 0x71, 0xb2, 0x2f,
-  0xc5, 0xce, 0x7f, 0xef, 0xe6, 0xbb, 0x73, 0xf7,
-  0xf5, 0x2a, 0x74, 0x29, 0xf5, 0x61, 0x1c, 0xff,
-  0xec, 0x63, 0x39, 0xf8, 0x29, 0xdc, 0x86, 0x88,
-  0x62, 0x2c, 0x7e, 0x3f, 0x20, 0x9f, 0xb0, 0x53,
-  0xb9, 0x0d, 0x10, 0x54, 0xf5, 0xea, 0xa0, 0x2a,
-  0x77, 0x0d, 0x05, 0x4f, 0x69, 0xfe, 0xd6, 0x54,
-  0xfe, 0xf5, 0x19, 0x7a, 0xa8, 0x0a, 0x82, 0xa7,
-  0xec, 0x45, 0xb2, 0xb0, 0xa9, 0x82, 0x12, 0xa7,
-  0xef, 0xaf, 0xe8, 0xf0, 0x95, 0x18, 0x98, 0x52,
-  0x10, 0xb0, 0x6e, 0xc4, 0x80, 0x33, 0xf8, 0x50,
-  0x4a, 0xb7, 0x8b, 0x4d, 0xe1, 0x29, 0xc7, 0xe5,
-  0x2e, 0x7a, 0x7a, 0xf6, 0x8e, 0xc6, 0x7f, 0xca,
-  0xfe, 0xfe, 0x54, 0x56, 0xa7, 0x4f, 0xf5, 0xec,
-  0xad, 0xb6, 0x50, 0x29, 0xd3, 0xfc, 0xb4, 0xbf,
-  0x51, 0x53, 0x18, 0x74, 0x29, 0xfa, 0x58, 0xea,
-  0x7f, 0xfe, 0x6b, 0xb9, 0xfd, 0x6d, 0xd9, 0x46,
-  0x97, 0xd3, 0xb7, 0x9a, 0x2f, 0xb9, 0xf7, 0xaf,
-  0xfc, 0x79, 0xd3, 0xfe, 0xff, 0x9f, 0x7b, 0x60,
-  0xfa, 0xa7, 0x4f, 0xeb, 0x83, 0x7f, 0xdf, 0x6c,
-  0x3c, 0x40, 0x33, 0xb8, 0x5e, 0x78, 0x80, 0x63,
-  0x0f, 0xa7, 0x44, 0x29, 0xb9, 0xe7, 0x88, 0x06,
-  0x7b, 0xbf, 0x4b, 0xcf, 0x10, 0x0c, 0xfe, 0xf2,
-  0x5b, 0x00, 0x05, 0x3c, 0x40, 0x33, 0xbd, 0xfd,
-  0x8f, 0x10, 0x0c, 0x6c, 0x8b, 0x96, 0x11, 0x58,
-  0xbd, 0xb1, 0xf4, 0xe1, 0x5b, 0x9e, 0x20, 0x18,
-  0x3c, 0x40, 0x33, 0x2b, 0x0f, 0x10, 0x0c, 0x6c,
-  0x6e, 0x7c, 0x2f, 0x3d, 0xe6, 0x6c, 0xa7, 0x88,
-  0x06, 0x75, 0xf9, 0x0f, 0x10, 0x0c, 0xff, 0xbf,
-  0xcf, 0x75, 0xbc, 0x9c, 0x27, 0x88, 0x06, 0x6e,
-  0xd8, 0xf1, 0x00, 0xcf, 0xef, 0xf0, 0x6b, 0x55,
-  0x01, 0xe2, 0x01, 0x9f, 0x7b, 0x5f, 0x7c, 0x07,
-  0x88, 0x06, 0x6f, 0x54, 0xf1, 0x00, 0xc0, 0x9e,
-  0xcd, 0xcd, 0xa7, 0xd7, 0xfa, 0xd2, 0xf3, 0x44,
-  0x03, 0x30, 0x14, 0xf1, 0x00, 0xb8, 0xda, 0xcf,
-  0xbc, 0xac, 0xed, 0x8f, 0x10, 0x0c, 0xf6, 0x9d,
-  0xf4, 0x3c, 0x40, 0x33, 0x94, 0x50, 0xf1, 0x00,
-  0xcf, 0xfb, 0x29, 0xae, 0xcb, 0x9f, 0x05, 0x4f,
-  0x10, 0x0c, 0xfb, 0x4e, 0x7b, 0xd4, 0xf1, 0x00,
-  0xc6, 0x22, 0x02, 0xc9, 0x93, 0x08, 0x0f, 0x10,
-  0x0c, 0x3d, 0x54, 0x7e, 0xc4, 0x79, 0x09, 0x8f,
-  0x2b, 0x58, 0xc8, 0x06, 0x95, 0x2e, 0xbc, 0x29,
-  0xb4, 0x22, 0x9f, 0x65, 0xeb, 0xd4, 0x9e, 0x20,
-  0x19, 0xfd, 0xb2, 0xa3, 0x42, 0xb7, 0x3c, 0x40,
-  0x3b, 0x1b, 0x49, 0xc2, 0xa1, 0x3c, 0x40, 0x30,
-  0x87, 0xee, 0x2a, 0x13, 0xde, 0xfb, 0xea, 0x78,
-  0x80, 0x67, 0xee, 0x69, 0xf9, 0x4b, 0xcf, 0x10,
-  0x0c, 0x62, 0x22, 0x80, 0x41, 0xa1, 0x7c, 0xff,
-  0x59, 0x6a, 0xea, 0xe8, 0x20, 0x3c, 0x40, 0x32,
-  0xf1, 0xe2, 0x01, 0x9b, 0xa8, 0xd8, 0xf8, 0xec,
-  0x8d, 0x30, 0x80, 0xf1, 0x00, 0xcf, 0xba, 0xf5,
-  0xf5, 0x27, 0x88, 0x06, 0x7e, 0xf7, 0xf4, 0x7e,
-  0x54, 0xf1, 0x00, 0xc2, 0xa2, 0x4b, 0xe4, 0x57,
-  0x35, 0x8d, 0x99, 0x01, 0xd9, 0x0d, 0xb6, 0x90,
-  0x05, 0x82, 0xc4, 0x5c, 0x5e, 0x02, 0x7a, 0xca,
-  0xd8, 0xbc, 0x78, 0x1a, 0x90, 0x93, 0xdf, 0x0c,
-  0x19, 0xdd, 0xc8, 0x68, 0x80, 0x5c, 0x8b, 0xc9,
-  0xed, 0x7a, 0xad, 0xb3, 0x0e, 0x98, 0x0a, 0x54,
-  0xb5, 0x95, 0x3a, 0xcb, 0x41, 0xd3, 0x04, 0x25,
-  0x47, 0x8f, 0x67, 0x56, 0x2a, 0xd0, 0x90, 0x47,
-  0x27, 0x33, 0xd5, 0x29, 0xc7, 0x83, 0x3d, 0x7a,
-  0xb7, 0xe8, 0x74, 0x50, 0xca, 0xe9, 0x79, 0x3a,
-  0x52, 0x5c, 0x7c, 0x70, 0x08, 0x63, 0x6f, 0x2d,
-  0x9f, 0x85, 0xa7, 0xa8, 0xd0, 0x74, 0xff, 0x9f,
-  0x5d, 0xdf, 0xc6, 0x28, 0xeb, 0x3a, 0x7f, 0xe1,
-  0xb7, 0x63, 0xd4, 0x41, 0xbd, 0x87, 0x4f, 0xdb,
-  0xc2, 0x3e, 0xcb, 0x15, 0x3c, 0xd5, 0xb9, 0xa3,
-  0xa7, 0xd8, 0xd3, 0xd6, 0x93, 0xa7, 0xb3, 0xea,
-  0xf2, 0xa0, 0x4f, 0xaf, 0xe4, 0x6d, 0xe5, 0x10,
-  0xa9, 0xbd, 0xe1, 0x6f, 0x90, 0x6c, 0x87, 0xd0,
-  0x99, 0x9e, 0xf7, 0xef, 0x53, 0xa7, 0x68, 0xdd,
-  0xd4, 0xe9, 0xff, 0x80, 0xcc, 0x4b, 0x7b, 0x6b,
-  0x69, 0xac, 0xe9, 0xff, 0xaf, 0x5c, 0xd9, 0x69,
-  0xae, 0x53, 0x73, 0xa7, 0xf3, 0xf2, 0xbb, 0xeb,
-  0x7c, 0x3a, 0x15, 0x1c, 0x9e, 0x22, 0xe4, 0x8d,
-  0x11, 0xa7, 0xdc, 0xdb, 0x6d, 0x94, 0xe9, 0xab,
-  0x53, 0xa7, 0x04, 0x21, 0x3a, 0x60, 0x71, 0x4e,
-  0x2f, 0x20, 0x4f, 0x5a, 0xa6, 0x53, 0xb8, 0x18,
-  0x54, 0x3d, 0x17, 0x6c, 0x84, 0x06, 0xa1, 0x0c,
-  0xfe, 0xbf, 0xf2, 0x90, 0x6f, 0x79, 0xd3, 0xfd,
-  0xfc, 0x6d, 0x8e, 0x08, 0x42, 0x54, 0xe6, 0x75,
-  0xce, 0x8b, 0x1e, 0xab, 0x63, 0xa8, 0x54, 0x73,
-  0xf8, 0xe3, 0xa1, 0x17, 0x35, 0xb8, 0xe9, 0x9a,
-  0xa9, 0xd3, 0xf3, 0xb1, 0xb7, 0xbf, 0xb6, 0x1a,
-  0xcd, 0xe2, 0xb3, 0xdb, 0x65, 0xb8, 0xe9, 0xff,
-  0x97, 0x3e, 0xfb, 0x67, 0xfe, 0xa1, 0x3a, 0x5e,
-  0x14, 0x55, 0xfd, 0x22, 0xe4, 0x31, 0x43, 0x6c,
-  0xee, 0xf8, 0xf4, 0xb6, 0x8f, 0xe7, 0x59, 0x7a,
-  0x42, 0xbf, 0xc4, 0x23, 0x4b, 0x57, 0xb4, 0x7c,
-  0xc0, 0x4d, 0xfc, 0x60, 0xd7, 0x8f, 0x79, 0xb4,
-  0x61, 0x53, 0xfd, 0x83, 0xf5, 0xbb, 0xf2, 0xc7,
-  0x4f, 0xdf, 0x06, 0x6d, 0xcf, 0x3a, 0x7d, 0xbd,
-  0xa7, 0xae, 0xac, 0xa8, 0x54, 0x48, 0xe1, 0xb6,
-  0xf2, 0xd9, 0xff, 0xc3, 0xaf, 0xfa, 0x76, 0xfc,
-  0xaf, 0x97, 0xe7, 0x4b, 0x79, 0xa2, 0x05, 0x95,
-  0xcd, 0x40, 0xa4, 0xbd, 0x73, 0x78, 0x11, 0xf9,
-  0xff, 0x7b, 0x52, 0xde, 0xde, 0xe0, 0x01, 0x4a,
-  0x9f, 0xfd, 0x7a, 0xf5, 0x3b, 0x98, 0xb9, 0xfb,
-  0xea, 0x1d, 0x0a, 0x89, 0x3f, 0x22, 0x4e, 0xa3,
-  0xef, 0x3a, 0x15, 0x38, 0x26, 0x42, 0x26, 0xd0,
-  0xba, 0xd0, 0x8a, 0x7f, 0x3d, 0xac, 0xff, 0x5b,
-  0x0e, 0x9f, 0xfc, 0x29, 0xfc, 0x6d, 0xfc, 0x51,
-  0x5a, 0x9d, 0x3f, 0xb9, 0xab, 0x63, 0x32, 0xa7,
-  0x46, 0x1f, 0xcb, 0x64, 0x79, 0xfb, 0xda, 0xef,
-  0x98, 0xc3, 0xa7, 0xd9, 0xb7, 0x86, 0xa7, 0x4f,
-  0xff, 0x56, 0xf4, 0xa7, 0xad, 0xb9, 0xbf, 0x2d,
-  0xe6, 0x1d, 0x25, 0xa0, 0xff, 0x42, 0x4f, 0x1e,
-  0x47, 0xb5, 0x88, 0xef, 0x0a, 0xb9, 0xdb, 0x70,
-  0x9d, 0x3e, 0x07, 0x7f, 0x1b, 0xce, 0x85, 0x3c,
-  0x4d, 0x06, 0xe7, 0x95, 0x94, 0xb4, 0x74, 0x2a,
-  0xa5, 0xf7, 0xc7, 0x43, 0x57, 0x9b, 0x91, 0x4f,
-  0x03, 0xa9, 0xa9, 0xd3, 0x04, 0x27, 0x45, 0x4d,
-  0xc0, 0x48, 0xa7, 0xea, 0xfa, 0xdd, 0x96, 0x29,
-  0xc6, 0x86, 0x70, 0x42, 0x12, 0xa7, 0x9f, 0x7c,
-  0x42, 0x9c, 0x5e, 0x4f, 0xb3, 0x6f, 0x02, 0xa7,
-  0x4b, 0x84, 0xf5, 0xfe, 0x5f, 0x3f, 0x7e, 0x9a,
-  0xb5, 0x97, 0x3a, 0x7d, 0x46, 0xaf, 0xd9, 0x49,
-  0xd3, 0xef, 0x55, 0x68, 0x61, 0xf2, 0xfd, 0x9f,
-  0x2f, 0x08, 0x34, 0x3e, 0x5f, 0xb3, 0x73, 0xcf,
-  0x97, 0xec, 0xf6, 0x8f, 0xca, 0x9f, 0x2f, 0xd8,
-  0xd8, 0xf4, 0x7e, 0x45, 0x3e, 0x5c, 0xae, 0x7c,
-  0xf9, 0x7e, 0xc1, 0xf2, 0xfd, 0x9b, 0xae, 0x7c,
-  0xbf, 0x58, 0x5b, 0xc9, 0xff, 0x3f, 0xad, 0x12,
-  0x67, 0xb3, 0x53, 0xc0, 0x3e, 0x5f, 0xb0, 0x7c,
-  0xbf, 0x66, 0x02, 0x9f, 0x2f, 0xd9, 0xfe, 0xc0,
-  0x70, 0xe3, 0x6c, 0xd8, 0xf9, 0x7e, 0xcf, 0xd9,
-  0x6f, 0x57, 0x4a, 0x0f, 0x97, 0xec, 0x01, 0x14,
-  0x7f, 0x22, 0xaa, 0x2c, 0xf0, 0xd0, 0xb7, 0x3e,
-  0x5f, 0xb0, 0x7c, 0xbf, 0x70, 0xd7, 0x4c, 0x10,
-  0x9f, 0x2f, 0xd8, 0x7a, 0xb1, 0x1d, 0x8d, 0x72,
-  0x10, 0x94, 0xc2, 0x74, 0x4a, 0x58, 0x63, 0x58,
-  0x5d, 0x5d, 0x78, 0x24, 0xd3, 0xd8, 0xf5, 0xd6,
-  0x5c, 0xbf, 0x5c, 0x88, 0xf9, 0xff, 0x62, 0x6d,
-  0x82, 0x1e, 0xb3, 0x47, 0x4c, 0xfa, 0x0a, 0x8a,
-  0x11, 0x2b, 0x4a, 0x0f, 0xcf, 0x60, 0x57, 0x25,
-  0x3a, 0x71, 0x8a, 0x7f, 0xfe, 0xa5, 0xe2, 0xad,
-  0xb9, 0xa5, 0xda, 0xca, 0xce, 0x68, 0xe8, 0x55,
-  0xd7, 0x3c, 0x26, 0xe9, 0xcc, 0x3d, 0x0b, 0x27,
-  0xfd, 0xad, 0x69, 0xfa, 0xda, 0xda, 0x21, 0xd3,
-  0xf7, 0xfb, 0x5d, 0xb9, 0xe7, 0x4e, 0x08, 0x42,
-  0x54, 0xed, 0xea, 0x02, 0x9c, 0x5e, 0x4f, 0xfb,
-  0xfc, 0xfd, 0xe3, 0x8d, 0xb8, 0x4e, 0x9f, 0xef,
-  0xf0, 0x37, 0x3d, 0x41, 0x49, 0xd1, 0xb2, 0x66,
-  0x2c, 0x41, 0x02, 0x57, 0xcb, 0x2e, 0x7f, 0x3f,
-  0xef, 0xff, 0xda, 0x37, 0x75, 0xd4, 0x5b, 0x9d,
-  0x38, 0x21, 0x09, 0x62, 0x10, 0x9f, 0x0a, 0x77,
-  0x21, 0x62, 0x10, 0x71, 0xa9, 0x9c, 0x10, 0x84,
-  0xb1, 0x07, 0xc1, 0x62, 0x0f, 0x71, 0xa9, 0x99,
-  0x59, 0x88, 0x90, 0x46, 0x99, 0xf5, 0xd6, 0xea,
-  0xc3, 0xa7, 0xbf, 0xe5, 0xd6, 0x74, 0xed, 0xea,
-  0x03, 0xa2, 0x83, 0xc0, 0x61, 0x1c, 0xf9, 0x16,
-  0xca, 0xc2, 0xa7, 0xdf, 0xef, 0xff, 0x0a, 0x9b,
-  0x10, 0xa9, 0x82, 0x12, 0xa3, 0x0f, 0xd6, 0xa4,
-  0xb7, 0x26, 0x08, 0xa4, 0xfe, 0xfe, 0xf5, 0x05,
-  0xb1, 0xbc, 0xa7, 0x1b, 0xb8, 0x54, 0xe0, 0x3c,
-  0xcd, 0xd0, 0xd3, 0x9f, 0xfd, 0x65, 0x05, 0x73,
-  0x36, 0xef, 0xf6, 0xb3, 0xa7, 0xf5, 0x77, 0xb2,
-  0xa1, 0xea, 0x4e, 0x85, 0x57, 0x5b, 0x89, 0x9e,
-  0x8c, 0x04, 0x63, 0xac, 0xe3, 0x4a, 0xa5, 0x4e,
-  0x08, 0x42, 0x54, 0xf9, 0xe0, 0xef, 0xec, 0x53,
-  0x8b, 0xc9, 0xff, 0xef, 0xd3, 0xba, 0x90, 0x2f,
-  0xd3, 0xa8, 0xff, 0x1d, 0x3f, 0xfd, 0x8a, 0xed,
-  0xbe, 0xba, 0x26, 0x6b, 0xf0, 0x9d, 0x3c, 0xdf,
-  0x60, 0x36, 0x3a, 0x1e, 0x7e, 0xfc, 0xa1, 0x3f,
-  0xf9, 0xf8, 0x20, 0x67, 0xab, 0xbe, 0xab, 0x87,
-  0x4f, 0x7b, 0x6c, 0x61, 0xd0, 0xa9, 0xc7, 0x3c,
-  0xdf, 0xa1, 0x95, 0xf2, 0x1d, 0x12, 0xa7, 0xed,
-  0x5d, 0x7d, 0xfa, 0x5e, 0x74, 0xff, 0xb8, 0x75,
-  0x3d, 0x6c, 0xea, 0x40, 0x74, 0xff, 0xab, 0x55,
-  0x1b, 0xab, 0xb6, 0xf1, 0xd3, 0xfe, 0xff, 0x35,
-  0x6e, 0x11, 0xf6, 0xc7, 0x46, 0x23, 0xbd, 0x0c,
-  0xfc, 0x80, 0xc3, 0xe9, 0xe7, 0xef, 0xc6, 0x8e,
-  0x9f, 0x0e, 0xd9, 0x9f, 0x3a, 0x7f, 0xed, 0x5f,
-  0xb2, 0xca, 0xda, 0xb6, 0x5a, 0x4e, 0x8e, 0x3f,
-  0x0a, 0x93, 0x4f, 0xff, 0x65, 0xeb, 0x8d, 0x59,
-  0x5b, 0x65, 0xac, 0xa7, 0x4f, 0xeb, 0xb7, 0x56,
-  0xbe, 0xdd, 0x28, 0xd0, 0xe8, 0xd9, 0x16, 0x9f,
-  0x21, 0xba, 0x84, 0xff, 0xf7, 0xab, 0x9b, 0x5e,
-  0xbe, 0xd7, 0x6e, 0xff, 0x8e, 0x9f, 0xff, 0xdf,
-  0xbe, 0x5b, 0xcb, 0x7f, 0x01, 0x5e, 0xe0, 0x84,
-  0x25, 0x4f, 0x6d, 0x99, 0xac, 0xa9, 0xcf, 0xfe,
-  0x86, 0x88, 0x66, 0x70, 0x42, 0x12, 0xa7, 0x67,
-  0xd0, 0xa7, 0x17, 0x93, 0xfe, 0xca, 0x33, 0x6e,
-  0x7f, 0xd6, 0x83, 0xa0, 0x07, 0xd1, 0xf2, 0x99,
-  0xfc, 0xff, 0xe5, 0xef, 0xa5, 0x07, 0x42, 0xa7,
-  0x13, 0x43, 0x0d, 0x24, 0x63, 0x0a, 0xee, 0x22,
-  0x9e, 0xf5, 0xfc, 0xa7, 0x4f, 0xed, 0x30, 0x40,
-  0x0f, 0x7c, 0xe9, 0xff, 0xf2, 0xbf, 0xdb, 0x5b,
-  0x7d, 0x70, 0x53, 0xb9, 0x0d, 0x10, 0x64, 0x59,
-  0x12, 0x97, 0x33, 0x9f, 0xda, 0x99, 0x5d, 0x4c,
-  0x15, 0x3a, 0x1e, 0x98, 0x77, 0xa1, 0x6b, 0x72,
-  0x39, 0xff, 0xe5, 0xfd, 0x1b, 0x9a, 0xf7, 0xf3,
-  0x6c, 0xfe, 0xb3, 0xa7, 0x28, 0xb4, 0x74, 0x2a,
-  0xec, 0xa6, 0xc7, 0x79, 0x1a, 0x42, 0x18, 0xfa,
-  0x3d, 0xce, 0x8d, 0x77, 0x43, 0x6d, 0x45, 0x69,
-  0xfd, 0xff, 0xab, 0xd8, 0xbe, 0x3a, 0x7f, 0x5f,
-  0xcd, 0xbd, 0x77, 0xa9, 0x52, 0x61, 0xd3, 0xf6,
-  0x7f, 0x58, 0xab, 0xbc, 0x78, 0xbb, 0xcd, 0x63,
-  0xc8, 0xbe, 0xab, 0xbc, 0xf0, 0xe9, 0x4b, 0xce,
-  0x9f, 0xdf, 0x7f, 0xf1, 0x8a, 0x87, 0x4e, 0x66,
-  0xd8, 0x74, 0x29, 0xf8, 0x61, 0x1f, 0x18, 0xce,
-  0xbf, 0xa8, 0x3a, 0x7f, 0xda, 0x5e, 0xbb, 0xc4,
-  0x0c, 0xf5, 0x4e, 0x9f, 0xf9, 0x7f, 0xd6, 0x50,
-  0x38, 0x6b, 0x52, 0xa3, 0x64, 0x42, 0x31, 0x0a,
-  0x7d, 0x6f, 0x7a, 0x9a, 0x9d, 0x05, 0x4f, 0xd5,
-  0xde, 0xa2, 0xac, 0x2a, 0x0a, 0x82, 0xa0, 0xa8,
-  0x2a, 0x1e, 0x7b, 0xfe, 0x0a, 0x01, 0x6e, 0x81,
-  0x5a, 0x81, 0x4d, 0xe1, 0x53, 0x5b, 0x0a, 0x9f,
-  0xbb, 0xae, 0xd2, 0xb0, 0xad, 0xc5, 0xac, 0x9b,
-  0xb2, 0xa0, 0xa8, 0x2a, 0x1e, 0x5a, 0x78, 0x2a,
-  0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa2,
-  0x83, 0x79, 0xb0, 0x57, 0x82, 0x80, 0x15, 0x50,
-  0xa6, 0xc1, 0x50, 0x54, 0x15, 0x0f, 0x2d, 0x2a,
-  0x15, 0x05, 0x41, 0x50, 0x54, 0x15, 0x0f, 0x35,
-  0x00, 0x0a, 0xb8, 0x53, 0x78, 0x54, 0x15, 0x05,
-  0x41, 0x50, 0x54, 0x50, 0x6a, 0x35, 0x85, 0x08,
-  0x55, 0x82, 0xa5, 0xac, 0xa8, 0x2a, 0x0a, 0x82,
-  0xa0, 0xa8, 0xd8, 0xd4, 0x52, 0x14, 0x00, 0xad,
-  0x02, 0xa0, 0xa8, 0x2a, 0x0a, 0x9f, 0x59, 0x41,
-  0x5c, 0x2a, 0x0a, 0x87, 0x9e, 0x72, 0x05, 0x58,
-  0x2b, 0x82, 0x80, 0x4d, 0x24, 0x2a, 0x0a, 0x82,
-  0xa0, 0xa8, 0x2a, 0x1e, 0x6a, 0x29, 0x0a, 0xf0,
-  0x53, 0x60, 0xa8, 0x2a, 0x0a, 0x82, 0xa0, 0xa8,
-  0x79, 0xa8, 0xd8, 0x2a, 0xc1, 0x5f, 0x0a, 0x95,
-  0x8a, 0x82, 0xa0, 0xa9, 0x3c, 0xa8, 0x2a, 0x92,
-  0xc2, 0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x28, 0x3e,
-  0x67, 0x85, 0x6b, 0x1a, 0x41, 0xa6, 0x82, 0x80,
-  0x15, 0x70, 0xa9, 0x61, 0x50, 0x54, 0x15, 0x27,
-  0x95, 0x05, 0x52, 0x58, 0x41, 0x50, 0x54, 0x29,
-  0xe9, 0x3c, 0x2b, 0xc3, 0x42, 0x34, 0xc0, 0xa8,
-  0x2a, 0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x14, 0xd9,
-  0x52, 0x14, 0x21, 0x4c, 0x0a, 0xf8, 0x54, 0x15,
-  0x05, 0x41, 0x50, 0x25, 0xf5, 0x42, 0xae, 0x15,
-  0x05, 0x41, 0x50, 0x54, 0x30, 0xbe, 0xf8, 0x55,
-  0xc2, 0xa4, 0xc2, 0xa0, 0xa8, 0x2a, 0x00, 0x5a,
-  0x68, 0x15, 0x05, 0x41, 0x50, 0x54, 0x15, 0x0a,
-  0x6a, 0x1a, 0x0a, 0xb0, 0x56, 0x81, 0x50, 0xab,
-  0xf5, 0xb4, 0x39, 0x3c, 0xf7, 0x62, 0x9c, 0x5c,
-  0x46, 0xda, 0x52, 0x3c, 0xcd, 0xab, 0x3d, 0x68,
-  0xe8, 0x61, 0x18, 0xc4, 0x7b, 0x1b, 0xf3, 0x30,
-  0x0f, 0x3e, 0xed, 0x56, 0x6b, 0xb0, 0xe8, 0xf2,
-  0xd9, 0x94, 0x29, 0x5a, 0x85, 0xbb, 0xc9, 0x1b,
-  0xd2, 0x67, 0xcf, 0xfa, 0xe5, 0x4a, 0x72, 0x6a,
-  0xf3, 0xbc, 0xac, 0x2a, 0x7b, 0xc9, 0xc2, 0x74,
-  0xef, 0x6d, 0x87, 0x4e, 0x5d, 0xee, 0xa5, 0x11,
-  0xe2, 0x73, 0x61, 0xbb, 0x8f, 0xcf, 0xeb, 0x78,
-  0x3b, 0x0a, 0xd0, 0x74, 0x52, 0x88, 0x46, 0x94,
-  0x26, 0x02, 0x9d, 0x3f, 0x0f, 0x7f, 0x7a, 0x80,
-  0xe9, 0xb8, 0x4e, 0x97, 0x8e, 0x42, 0xd2, 0x48,
-  0x74, 0x98, 0x74, 0xec, 0xd4, 0x77, 0x91, 0x26,
-  0x22, 0xb6, 0x41, 0xe1, 0xed, 0xe1, 0xf3, 0xff,
-  0xed, 0x17, 0x77, 0x08, 0xf0, 0x15, 0xc1, 0x08,
-  0x4e, 0x87, 0xb3, 0x63, 0xb6, 0x84, 0x9a, 0x16,
-  0x7a, 0x14, 0x2d, 0x12, 0x75, 0x2a, 0x7f, 0xf0,
-  0xb8, 0xba, 0xf4, 0xfe, 0x5f, 0xdf, 0xbf, 0xa6,
-  0x1d, 0x3f, 0x3f, 0xfe, 0x7d, 0xb0, 0xe9, 0xf5,
-  0x1e, 0x15, 0x79, 0xd0, 0x27, 0xa9, 0xf2, 0xd9,
-  0xff, 0x59, 0x44, 0x1f, 0xc0, 0xf0, 0x0e, 0x9d,
-  0x98, 0xd1, 0xd2, 0xcb, 0x1e, 0xb8, 0x0f, 0x27,
-  0xea, 0xe3, 0x6f, 0xad, 0x27, 0x4f, 0x2f, 0xee,
-  0x87, 0x49, 0x71, 0x1d, 0xdf, 0x78, 0xb9, 0x3e,
-  0xa1, 0x7c, 0xf6, 0x9c, 0x2f, 0x3a, 0x79, 0x74,
-  0x6e, 0xea, 0x54, 0xf9, 0xee, 0x08, 0x42, 0x74,
-  0x7c, 0xf3, 0xf4, 0x27, 0x8d, 0x91, 0x27, 0x8e,
-  0x10, 0xc5, 0x4d, 0xc0, 0x8d, 0xd3, 0x48, 0x6b,
-  0xcf, 0xc3, 0xa0, 0x33, 0xe8, 0x74, 0xff, 0x51,
-  0xfc, 0x7d, 0xb0, 0x15, 0x3a, 0x7b, 0x6d, 0x95,
-  0xb1, 0xd3, 0xff, 0xe5, 0xb2, 0xb1, 0x16, 0xf8,
-  0x29, 0xdc, 0x86, 0x8b, 0xe2, 0x7f, 0x07, 0xaf,
-  0x55, 0xca, 0x0e, 0x9f, 0xff, 0xb2, 0xfb, 0xde,
-  0xad, 0xbd, 0xf0, 0x0f, 0x95, 0x98, 0x54, 0xd7,
-  0xc3, 0xa7, 0xc3, 0xea, 0x39, 0x86, 0x98, 0x4e,
-  0x7a, 0xfa, 0x2f, 0x1a, 0x61, 0x39, 0x80, 0xa6,
-  0xa0, 0x4e, 0x7f, 0x7f, 0xb5, 0xdd, 0x44, 0x06,
-  0xa0, 0x4e, 0x7f, 0x57, 0x2d, 0xea, 0xe9, 0x41,
-  0xa6, 0x13, 0x9b, 0x36, 0x34, 0xc2, 0x73, 0x04,
-  0x27, 0x98, 0x4e, 0x31, 0x34, 0xca, 0x4d, 0x3c,
-  0x5c, 0xc2, 0x2a, 0xa0, 0x36, 0x42, 0x09, 0x1c,
-  0xae, 0x59, 0x84, 0xdc, 0x7c, 0xf2, 0xf5, 0x29,
-  0xfb, 0x06, 0x3c, 0x88, 0xaa, 0xa8, 0x4b, 0xca,
-  0x53, 0x85, 0x57, 0x37, 0xb1, 0xca, 0x12, 0xd9,
-  0x6e, 0xf2, 0xad, 0xa7, 0xdb, 0x60, 0xfb, 0x59,
-  0xd3, 0xef, 0xe6, 0xfc, 0x68, 0xe9, 0xfe, 0xb7,
-  0x32, 0xde, 0x5a, 0x5e, 0x74, 0xfd, 0xbf, 0xef,
-  0xd4, 0xea, 0x0e, 0x8f, 0x1f, 0x60, 0x0e, 0x63,
-  0xe8, 0xb7, 0xbc, 0x25, 0x61, 0x57, 0x48, 0x72,
-  0x5e, 0x3f, 0x94, 0xba, 0x1c, 0x13, 0xff, 0x99,
-  0x7a, 0xfb, 0xf4, 0xbe, 0xfe, 0xaf, 0x8e, 0x9f,
-  0xff, 0xdf, 0xca, 0x72, 0xbd, 0xfb, 0x79, 0x6f,
-  0x6d, 0x39, 0x87, 0x4f, 0xdf, 0xd1, 0x9e, 0xb2,
-  0x9d, 0x3f, 0xfe, 0xef, 0xdf, 0xba, 0xdf, 0x5b,
-  0xd4, 0x39, 0x63, 0xa7, 0x0d, 0x6a, 0x78, 0x80,
-  0xe7, 0xff, 0xb7, 0x8a, 0xd9, 0x77, 0x60, 0xa7,
-  0x72, 0x1a, 0x20, 0x37, 0x1a, 0x88, 0x02, 0x39,
-  0x6e, 0xf7, 0x18, 0x99, 0xb7, 0xa3, 0x13, 0x9f,
-  0xff, 0xdc, 0xfc, 0xaf, 0x84, 0x7c, 0xcd, 0xf7,
-  0xb6, 0x06, 0xe7, 0x4f, 0xff, 0xf7, 0x3f, 0x3e,
-  0xd3, 0xf2, 0x97, 0xef, 0x50, 0x38, 0x21, 0x09,
-  0x51, 0x64, 0x65, 0xfd, 0x86, 0x7f, 0x2e, 0x0a,
-  0x77, 0x21, 0xa2, 0x09, 0x9f, 0xe5, 0xbe, 0x0a,
-  0x77, 0x21, 0xa2, 0xf9, 0x9f, 0x79, 0xb7, 0xf2,
-  0xbb, 0x1f, 0xd2, 0x1d, 0x4f, 0xfa, 0x8e, 0xa7,
-  0x53, 0x2f, 0xfe, 0x6c, 0x74, 0xe0, 0x84, 0x25,
-  0x4f, 0xd7, 0xb6, 0x27, 0x09, 0x4e, 0x2f, 0x22,
-  0x84, 0x4c, 0xfd, 0x82, 0x7f, 0xea, 0x18, 0xb4,
-  0xd7, 0xf9, 0x46, 0xf7, 0x9d, 0x3f, 0xfd, 0xbe,
-  0x9f, 0xee, 0x4b, 0x78, 0x00, 0x51, 0x79, 0xd3,
-  0x82, 0x10, 0x95, 0x3f, 0xb7, 0x81, 0x7f, 0x94,
-  0xdc, 0xa7, 0x17, 0x93, 0xff, 0xf3, 0x77, 0xb9,
-  0x2d, 0xed, 0xb6, 0xc0, 0xee, 0xbd, 0x72, 0x83,
-  0xa5, 0xd6, 0x45, 0x5e, 0x88, 0x90, 0xf5, 0x51,
-  0x7e, 0x86, 0xd0, 0x92, 0x31, 0x26, 0xf1, 0x8d,
-  0xcf, 0xfb, 0x2e, 0xa3, 0x5b, 0x2f, 0xee, 0x78,
-  0x82, 0x27, 0xf2, 0xe0, 0xa7, 0x72, 0x1a, 0x20,
-  0x87, 0x1e, 0x4c, 0xfd, 0xd6, 0x11, 0xf0, 0x4e,
-  0x9f, 0xb5, 0x7b, 0x07, 0xbe, 0xf3, 0xa3, 0xe7,
-  0xbb, 0xa1, 0x5c, 0x01, 0x19, 0x7f, 0x85, 0x44,
-  0xff, 0x2f, 0xef, 0xbf, 0x2d, 0xd4, 0x9d, 0x3f,
-  0xfd, 0xc1, 0xbe, 0x59, 0x7d, 0x7f, 0xe5, 0xbc,
-  0x74, 0x3d, 0x11, 0x1f, 0x3a, 0x9f, 0xd7, 0xde,
-  0xca, 0x87, 0xa9, 0x3a, 0x7b, 0xcd, 0x78, 0x27,
-  0x4f, 0xff, 0xb4, 0xa3, 0xeb, 0x96, 0x72, 0xdf,
-  0x2d, 0xa0, 0x9d, 0x3e, 0xcb, 0xd7, 0x7d, 0x76,
-  0x3f, 0x9d, 0xe4, 0x73, 0xf2, 0x5b, 0xda, 0x9e,
-  0xd6, 0x74, 0xfc, 0xc5, 0xd5, 0xdb, 0x28, 0x3a,
-  0x7f, 0xff, 0xfb, 0xd7, 0xe6, 0x77, 0xc0, 0xff,
-  0x57, 0x46, 0x5b, 0xcb, 0x7b, 0x69, 0xcc, 0x3a,
-  0x36, 0x47, 0x1f, 0x8c, 0xb8, 0xc6, 0x70, 0xef,
-  0xa9, 0xd3, 0xfe, 0xef, 0xa6, 0x0a, 0x77, 0x21,
-  0xa2, 0x11, 0x85, 0x3e, 0x2d, 0x07, 0x67, 0xff,
-  0x2e, 0x53, 0xbe, 0xfe, 0xfe, 0x8f, 0xca, 0x9d,
-  0x3f, 0xfd, 0xdd, 0x46, 0xfc, 0xb7, 0x31, 0xc1,
-  0x08, 0x4e, 0x96, 0x6c, 0x89, 0xe6, 0x93, 0x67,
-  0x04, 0x21, 0x2a, 0x7f, 0xb0, 0x1c, 0x38, 0xdb,
-  0x36, 0x29, 0xc5, 0xe4, 0xc1, 0x09, 0x53, 0x82,
-  0x10, 0x95, 0x3f, 0x75, 0x1b, 0x59, 0x6a, 0x53,
-  0x8b, 0xc8, 0xfa, 0x2d, 0x82, 0x8f, 0xa8, 0x65,
-  0x3e, 0x4f, 0x6d, 0xbd, 0x85, 0x38, 0xd9, 0xce,
-  0x08, 0x42, 0x54, 0xea, 0xa8, 0x94, 0xe2, 0xf2,
-  0x40, 0xf1, 0xff, 0xdd, 0x5a, 0x7e, 0xdb, 0xea,
-  0xfe, 0x43, 0xa7, 0xf6, 0xf1, 0xdb, 0xcd, 0x97,
-  0x63, 0xa7, 0xf5, 0xed, 0x8d, 0xb2, 0xf5, 0x3a,
-  0x05, 0x13, 0x16, 0x2c, 0xf9, 0xc4, 0x2a, 0x3b,
-  0xf2, 0x18, 0x13, 0xa9, 0xd5, 0x73, 0x75, 0x3a,
-  0x7f, 0xf6, 0x6a, 0xfb, 0xe0, 0xc4, 0x5b, 0x2b,
-  0x0e, 0x9f, 0x93, 0xd5, 0xb7, 0x9a, 0x2a, 0x7f,
-  0x7f, 0x29, 0x7d, 0x7d, 0xac, 0xe9, 0xee, 0xe1,
-  0xd6, 0x74, 0x6e, 0x3d, 0x7a, 0x0d, 0xa7, 0x97,
-  0x98, 0xd8, 0xa9, 0xc1, 0x08, 0x4a, 0x9f, 0xfe,
-  0xde, 0xa0, 0xcc, 0xfd, 0xed, 0xe5, 0xfd, 0x05,
-  0x38, 0xbc, 0x96, 0x22, 0x27, 0x98, 0x7d, 0x0a,
-  0x9f, 0x23, 0xca, 0xe9, 0x4a, 0xf4, 0x21, 0x6d,
-  0x0c, 0x39, 0xff, 0xf3, 0x31, 0x17, 0xfd, 0x7a,
-  0xed, 0xa7, 0x0b, 0xce, 0x9f, 0x2d, 0xea, 0xdb,
-  0x0e, 0x85, 0x3f, 0xcb, 0xaa, 0x4f, 0xff, 0x79,
-  0xb6, 0x7f, 0x6f, 0xf0, 0x73, 0xfd, 0xac, 0xe9,
-  0xff, 0xfe, 0xda, 0xde, 0x0e, 0x37, 0xf9, 0x9d,
-  0x7a, 0xe8, 0xfc, 0xa6, 0xe7, 0x46, 0x23, 0x03,
-  0x94, 0xe1, 0x5b, 0x1d, 0xfa, 0x13, 0x5f, 0x1c,
-  0xbe, 0xd0, 0xf4, 0xc9, 0x65, 0x1e, 0x8d, 0xa9,
-  0xa8, 0x58, 0x09, 0x1b, 0x21, 0x5f, 0x68, 0xc9,
-  0xc1, 0x09, 0x2f, 0xc3, 0x02, 0xb2, 0xa7, 0x6f,
-  0x28, 0x2b, 0x48, 0x68, 0x86, 0x1c, 0x33, 0x9b,
-  0x2f, 0xce, 0x9f, 0xfe, 0xcf, 0xba, 0xfa, 0xfd,
-  0x4d, 0x6d, 0x80, 0xe3, 0xa5, 0x4b, 0xcf, 0xbf,
-  0x61, 0xd9, 0xfa, 0xcd, 0x7a, 0xde, 0x61, 0xd3,
-  0xfe, 0xfa, 0xde, 0xdc, 0x0e, 0xa6, 0xa7, 0x4e,
-  0x6b, 0x41, 0x3a, 0x7f, 0xdd, 0xe1, 0xca, 0x5c,
-  0x10, 0x84, 0xe8, 0xe3, 0xdb, 0xa8, 0xec, 0xff,
-  0xf7, 0xd5, 0xfb, 0xb7, 0xdf, 0xdf, 0xd1, 0xf9,
-  0x53, 0xa3, 0x13, 0x3e, 0x42, 0xfb, 0x42, 0x64,
-  0x04, 0x33, 0xf9, 0x7e, 0xff, 0xe6, 0x00, 0xe9,
-  0xfc, 0xfc, 0x1a, 0xfd, 0x68, 0x3a, 0x7f, 0xf9,
-  0x5b, 0x28, 0xbb, 0x7d, 0xff, 0x94, 0x78, 0x4f,
-  0x77, 0xbc, 0xff, 0xf6, 0x5d, 0x7e, 0x99, 0x7b,
-  0x78, 0x40, 0x87, 0x4f, 0xba, 0xb9, 0xfb, 0x9d,
-  0x3a, 0xfd, 0xab, 0x3a, 0x7f, 0x5e, 0xde, 0x70,
-  0x3b, 0xc7, 0x45, 0x09, 0x91, 0xec, 0xbf, 0xf4,
-  0xcb, 0x93, 0x68, 0x3f, 0x3f, 0xb4, 0x02, 0xdb,
-  0xdc, 0xf3, 0xa7, 0xff, 0xef, 0xe5, 0x74, 0xdd,
-  0x96, 0xef, 0xe3, 0x4f, 0x5a, 0x4e, 0x9f, 0xf6,
-  0x57, 0x4c, 0x14, 0xee, 0x43, 0x44, 0x0d, 0x3e,
-  0xcb, 0xdb, 0x9f, 0xb9, 0x14, 0xbf, 0x5e, 0x9f,
-  0xff, 0xff, 0xb2, 0xf6, 0xef, 0xeb, 0xdd, 0x51,
-  0xee, 0xbb, 0x6c, 0xdb, 0x76, 0x33, 0xbf, 0x4b,
-  0xcf, 0x10, 0x5c, 0xff, 0xbb, 0xb5, 0xa7, 0x6d,
-  0xbb, 0x58, 0x4f, 0x10, 0x5c, 0xff, 0xd6, 0xf5,
-  0xbc, 0xbf, 0xbe, 0xed, 0x61, 0x3c, 0x41, 0x73,
-  0xf9, 0x7d, 0xfb, 0xee, 0xd6, 0x13, 0xc4, 0x17,
-  0x3f, 0x33, 0x36, 0xdd, 0xac, 0x27, 0x88, 0x2e,
-  0x7f, 0xff, 0xbb, 0xff, 0xf3, 0x37, 0x55, 0x2d,
-  0xe1, 0xf6, 0xba, 0x30, 0x27, 0x88, 0x2e, 0x6a,
-  0x77, 0x6c, 0x9d, 0x0a, 0x28, 0x0a, 0xb7, 0x22,
-  0x7c, 0xfe, 0x2c, 0xaa, 0x5b, 0xf2, 0x8f, 0xa7,
-  0xb8, 0x41, 0xc7, 0x4f, 0xfd, 0x6f, 0x5b, 0xcb,
-  0xfb, 0xee, 0xd6, 0x13, 0xc4, 0x17, 0x3f, 0xcd,
-  0x55, 0x3d, 0x46, 0xed, 0x61, 0x3c, 0x41, 0x73,
-  0xeb, 0xd5, 0x59, 0xb9, 0x11, 0x45, 0xbd, 0x5a,
-  0x7f, 0xf6, 0xe4, 0xb7, 0x91, 0x6f, 0x5d, 0xda,
-  0xc2, 0x78, 0x82, 0xe7, 0xff, 0xfe, 0xff, 0xfc,
-  0xcd, 0xda, 0x66, 0xea, 0xa5, 0xbc, 0x3e, 0xd7,
-  0x46, 0x04, 0xf1, 0x05, 0xc6, 0x26, 0x4d, 0x4a,
-  0x1f, 0x2e, 0x4f, 0xf5, 0xbc, 0x3e, 0xd7, 0x46,
-  0x04, 0xf1, 0x05, 0xcf, 0xff, 0x77, 0x52, 0xfa,
-  0xdb, 0xdb, 0x6c, 0xa2, 0xa5, 0x4f, 0xfb, 0x1e,
-  0xfd, 0x2a, 0x3f, 0xa3, 0x50, 0xf1, 0x05, 0xc2,
-  0x23, 0xa0, 0x52, 0x2a, 0xa1, 0x3f, 0xe4, 0xf0,
-  0xdf, 0x81, 0x5d, 0xc1, 0x3c, 0x41, 0x73, 0xf5,
-  0xbd, 0x6b, 0x78, 0x06, 0x80, 0x2e, 0x7d, 0x80,
-  0xdd, 0xac, 0x27, 0x88, 0x2e, 0x6c, 0xba, 0x1f,
-  0x9d, 0x8e, 0xe2, 0x94, 0x75, 0xd6, 0x17, 0xf3,
-  0xf3, 0x33, 0x6d, 0xda, 0xc2, 0x78, 0x82, 0xe7,
-  0xfc, 0x96, 0xf0, 0xfb, 0x5d, 0x18, 0x13, 0xc4,
-  0x17, 0x36, 0x6e, 0xe4, 0x46, 0x54, 0xfe, 0x7f,
-  0x69, 0xe6, 0x77, 0xe9, 0x79, 0xe2, 0x0b, 0x9f,
-  0xf6, 0x79, 0xb6, 0x7f, 0x36, 0xe7, 0x9e, 0x20,
-  0xb6, 0x1e, 0x14, 0x6c, 0xbb, 0x8e, 0x02, 0xcf,
-  0xc7, 0xcf, 0x58, 0xc6, 0x2f, 0x18, 0xce, 0x90,
-  0xb5, 0x0b, 0x8c, 0xf8, 0x15, 0x00, 0x14, 0xd1,
-  0x05, 0xb9, 0x10, 0x13, 0xfe, 0xc7, 0xdb, 0x9e,
-  0xde, 0xdf, 0xa5, 0x07, 0x4f, 0xe1, 0xfe, 0x6d,
-  0x6d, 0x02, 0x74, 0xfa, 0x9b, 0xf0, 0x80, 0xe9,
-  0xfb, 0x28, 0xeb, 0x2e, 0xac, 0xe8, 0xf2, 0x22,
-  0xf8, 0xd3, 0xe4, 0xf3, 0xb8, 0x68, 0x3a, 0x60,
-  0x29, 0xd3, 0xde, 0x56, 0x61, 0xd0, 0x74, 0xfd,
-  0xda, 0xee, 0xa2, 0x03, 0xa3, 0x63, 0x6f, 0xf0,
-  0xa9, 0xff, 0xfc, 0xbe, 0xdb, 0xeb, 0xa2, 0x5f,
-  0x13, 0x65, 0x4d, 0xec, 0x3a, 0x60, 0x29, 0xd3,
-  0x2e, 0xb3, 0xa7, 0xfb, 0x2f, 0x55, 0x66, 0xfc,
-  0x68, 0xe9, 0xfd, 0x5c, 0xb7, 0xab, 0xa5, 0x07,
-  0x4c, 0x10, 0x95, 0x3f, 0xdf, 0xc6, 0xdc, 0xfa,
-  0xfb, 0x63, 0xa1, 0x13, 0xf7, 0xf0, 0xd8, 0x8a,
-  0xb1, 0x5e, 0xc4, 0x40, 0x62, 0x6e, 0xc5, 0x7e,
-  0x2f, 0x53, 0xa0, 0x9a, 0xef, 0x16, 0x9c, 0x10,
-  0x84, 0xa9, 0x30, 0xa7, 0x17, 0x93, 0xee, 0x6b,
-  0xb8, 0x4a, 0x72, 0x36, 0x77, 0xc2, 0xea, 0x7f,
-  0x53, 0x75, 0xcb, 0x65, 0x07, 0x42, 0xb6, 0x40,
-  0xf9, 0x1b, 0x46, 0xb4, 0x1a, 0x4c, 0x7d, 0x1a,
-  0xa8, 0xa7, 0x5a, 0x1b, 0x1d, 0x49, 0x1e, 0xfa,
-  0x35, 0x61, 0xa3, 0xa4, 0xaf, 0xf6, 0xc9, 0x73,
-  0xd8, 0x8b, 0x73, 0xa7, 0xb1, 0x99, 0x73, 0xa7,
-  0xba, 0x8d, 0xef, 0x3a, 0x14, 0xf8, 0xe9, 0x1f,
-  0x6f, 0x20, 0x9f, 0xbf, 0xa6, 0xcc, 0xe7, 0x9d,
-  0x3f, 0xfd, 0x4b, 0xfe, 0xbb, 0x99, 0xf5, 0xd7,
-  0x7f, 0x50, 0x74, 0xfe, 0xad, 0xdb, 0x67, 0xf3,
-  0x63, 0xa1, 0x51, 0x75, 0xe2, 0xfe, 0x56, 0x9d,
-  0xdb, 0xb7, 0x9d, 0x3f, 0xfd, 0xf7, 0xee, 0xcd,
-  0xbd, 0x5a, 0x6f, 0xa7, 0x54, 0xe8, 0xdc, 0x7e,
-  0x98, 0x3f, 0x3f, 0x50, 0xd3, 0xdb, 0x83, 0x41,
-  0xd3, 0x3e, 0x83, 0xa7, 0xd6, 0xcf, 0x3e, 0xa7,
-  0x4f, 0xff, 0x59, 0x77, 0xba, 0xff, 0xe0, 0x56,
-  0xaa, 0x02, 0xa7, 0xf0, 0x30, 0x53, 0xb9, 0x0f,
-  0x10, 0x24, 0x3d, 0x16, 0x7b, 0x13, 0x8a, 0x8c,
-  0xcd, 0xef, 0x3a, 0x7a, 0xf4, 0x77, 0xce, 0x9e,
-  0xa6, 0xbd, 0x73, 0xa2, 0x83, 0xdd, 0xc1, 0x9b,
-  0x11, 0x4f, 0xef, 0xf0, 0x6b, 0x55, 0x01, 0xd3,
-  0x82, 0x10, 0x9f, 0x0f, 0xa9, 0xdd, 0xfd, 0x8b,
-  0x87, 0xd3, 0x8d, 0x4c, 0x6c, 0x89, 0x40, 0x2d,
-  0xcf, 0xff, 0xb3, 0xfe, 0xd6, 0xea, 0xde, 0xda,
-  0x73, 0xde, 0xa7, 0x45, 0x07, 0xf9, 0xac, 0x92,
-  0x35, 0x52, 0xae, 0xf7, 0x9a, 0x64, 0x32, 0xbd,
-  0x08, 0xde, 0x8c, 0xfe, 0x7d, 0xeb, 0xad, 0xea,
-  0x54, 0xf2, 0x2d, 0xea, 0x54, 0xc1, 0x09, 0x50,
-  0xf3, 0xdd, 0xc2, 0x70, 0x90, 0x4d, 0x81, 0x29,
-  0xc6, 0xba, 0x7f, 0xfd, 0x97, 0x54, 0xcc, 0xfd,
-  0xed, 0xe5, 0xfd, 0x07, 0x40, 0x0f, 0xe0, 0x24,
-  0xb3, 0xff, 0xf9, 0x5b, 0x7b, 0xe0, 0xdd, 0x7a,
-  0xe2, 0x5b, 0xbf, 0x7a, 0x9d, 0x3f, 0x9a, 0xa5,
-  0xf6, 0xd1, 0x44, 0xe9, 0xcf, 0xe1, 0x3a, 0x7c,
-  0xfc, 0xbe, 0x6c, 0x54, 0xbc, 0xd1, 0xe0, 0xdc,
-  0x6a, 0x60, 0x29, 0xd3, 0x01, 0x4e, 0x9f, 0xbf,
-  0xa3, 0xf3, 0xee, 0xf1, 0xaa, 0x00, 0xac, 0xff,
-  0xd7, 0xb6, 0x33, 0x7a, 0x83, 0x29, 0xb9, 0xd3,
-  0xfa, 0x94, 0xf0, 0xef, 0x5d, 0x8e, 0x9e, 0x03,
-  0x39, 0xf5, 0x3f, 0xbb, 0xa3, 0x4e, 0xd4, 0xca,
-  0x4e, 0x85, 0x3d, 0x8e, 0x39, 0x9c, 0x10, 0x84,
-  0xa9, 0xf6, 0x6b, 0xfe, 0x95, 0x29, 0xc5, 0xe4,
-  0xfb, 0x1c, 0x10, 0x84, 0xe8, 0x53, 0xe0, 0xb9,
-  0xcc, 0xf0, 0x7b, 0xef, 0x3a, 0x64, 0xb1, 0xd3,
-  0x82, 0x10, 0x95, 0x3f, 0x7b, 0xb5, 0xdb, 0xd7,
-  0x29, 0xc5, 0xe4, 0xfb, 0x01, 0x98, 0xd1, 0xd2,
-  0xae, 0xe4, 0x4a, 0x89, 0x8f, 0xcf, 0xa7, 0xbd,
-  0xfd, 0x1f, 0xb2, 0x3b, 0x72, 0x16, 0xd0, 0xab,
-  0x8a, 0x4f, 0x22, 0xc6, 0x4d, 0x6e, 0xc2, 0xa7,
-  0x68, 0xc6, 0x2b, 0x09, 0xcb, 0xc6, 0x1d, 0x3f,
-  0x2b, 0x04, 0x7a, 0xe7, 0x4f, 0xff, 0x79, 0x94,
-  0xbe, 0xbb, 0xb3, 0xff, 0xcf, 0x00, 0xe8, 0xb1,
-  0xfe, 0xdc, 0xaa, 0x4e, 0x6e, 0x90, 0x83, 0x89,
-  0x59, 0x54, 0xd4, 0x46, 0x2c, 0xf9, 0x49, 0xbb,
-  0x4a, 0x82, 0xca, 0xdb, 0x4f, 0x5c, 0x6e, 0x29,
-  0x1d, 0x95, 0x32, 0xa9, 0xfd, 0x09, 0xd6, 0xa7,
-  0x88, 0x86, 0x74, 0x91, 0x92, 0x82, 0xed, 0x3d,
-  0xa5, 0xd4, 0xed, 0x30, 0x4a, 0xfb, 0xfc, 0xea,
-  0xfd, 0x6b, 0x22, 0x8b, 0xd6, 0x73, 0xfa, 0x46,
-  0x6a, 0xda, 0x1d, 0x81, 0x85, 0x16, 0xa4, 0xb1,
-  0x2d, 0xf3, 0xb6, 0xad, 0xf1, 0x80, 0xc3, 0xa1,
-  0x0b, 0xe0, 0xfc, 0x41, 0xea, 0xcf, 0xe7, 0x60,
-  0xa7, 0x72, 0x1a, 0x2e, 0x39, 0xfc, 0xec, 0x14,
-  0xee, 0x43, 0x45, 0xd7, 0x3f, 0xf3, 0xb9, 0xee,
-  0xc1, 0x4e, 0xe4, 0x34, 0x4a, 0x30, 0xb0, 0x89,
-  0x45, 0x79, 0x46, 0xc7, 0x7a, 0xce, 0xd0, 0xef,
-  0xd0, 0xf0, 0xd5, 0xa0, 0x76, 0x21, 0x90, 0xaa,
-  0x71, 0x73, 0xb6, 0xf3, 0xb9, 0xff, 0xce, 0x67,
-  0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x89, 0x6a, 0x7c,
-  0x29, 0xdc, 0x86, 0x88, 0xde, 0x7f, 0xdc, 0xf7,
-  0x60, 0xa7, 0x72, 0x1a, 0x25, 0xf9, 0x3b, 0x0f,
-  0xd9, 0x86, 0x13, 0xf9, 0xd8, 0x29, 0xdc, 0x86,
-  0x8a, 0xae, 0x7f, 0xb5, 0xe7, 0xf2, 0x9b, 0xf3,
-  0x0e, 0x9b, 0x6f, 0x1d, 0x3f, 0x60, 0xa7, 0x72,
-  0x1a, 0x24, 0x08, 0xdc, 0x79, 0x8e, 0x17, 0x9f,
-  0x57, 0xbf, 0xd4, 0x9d, 0x0f, 0x3c, 0xba, 0x49,
-  0x23, 0x5a, 0x3d, 0x3a, 0x1a, 0x33, 0xff, 0x7f,
-  0x28, 0x76, 0xa2, 0xff, 0xf9, 0x73, 0xa1, 0xc7,
-  0xe0, 0x25, 0x33, 0xf9, 0xd8, 0x29, 0xdc, 0x86,
-  0x8b, 0x22, 0x7f, 0x3b, 0x05, 0x3b, 0x90, 0xd1,
-  0x6b, 0xcf, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x2e,
-  0x49, 0xf0, 0xa7, 0x72, 0x1a, 0x2e, 0xc9, 0xff,
-  0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68, 0xa3, 0xa4,
-  0xec, 0x3f, 0x66, 0x18, 0x4f, 0x85, 0x3b, 0x90,
-  0xd1, 0x4a, 0xcf, 0xff, 0xff, 0x59, 0x68, 0x5b,
-  0x79, 0xb7, 0x6d, 0x6f, 0x39, 0x2d, 0xe6, 0xac,
-  0xb4, 0x61, 0xd3, 0xe7, 0x33, 0x9e, 0xec, 0x45,
-  0x93, 0x46, 0x11, 0x42, 0xe7, 0x7b, 0xe1, 0x91,
-  0x49, 0x3f, 0xa3, 0x9f, 0x61, 0x08, 0x0e, 0xea,
-  0x77, 0x78, 0x58, 0xb6, 0x86, 0xcc, 0xff, 0x3d,
-  0xd8, 0x29, 0xdc, 0x86, 0x88, 0xe2, 0x7f, 0xbc,
-  0xec, 0x14, 0xee, 0x43, 0x45, 0x6b, 0x27, 0x72,
-  0x20, 0xae, 0x83, 0x3f, 0xf9, 0xcc, 0xe7, 0xbb,
-  0x05, 0x3b, 0x90, 0xd1, 0x2d, 0xcd, 0x94, 0x9d,
-  0x3f, 0xb6, 0xc6, 0x31, 0x7d, 0x53, 0xa2, 0x93,
-  0xc9, 0xf0, 0xb4, 0xeb, 0x6c, 0xf3, 0xa7, 0x3d,
-  0x88, 0x74, 0x1a, 0x21, 0xb9, 0xff, 0x73, 0xdd,
-  0x82, 0x9d, 0xc8, 0x68, 0x98, 0x27, 0x0e, 0x80,
-  0x2a, 0x7f, 0x7f, 0x2f, 0x75, 0x1a, 0x9d, 0x27,
-  0x2a, 0x60, 0xb4, 0x11, 0xec, 0x3a, 0x83, 0x6c,
-  0x17, 0xba, 0x36, 0xf1, 0xc9, 0xcc, 0xd0, 0x4a,
-  0x9f, 0xf7, 0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x89,
-  0x8e, 0x4e, 0xf1, 0xf1, 0x30, 0x72, 0x7e, 0x5a,
-  0xee, 0xbe, 0x58, 0xe9, 0xff, 0xff, 0xe7, 0xd6,
-  0xd9, 0xa0, 0x6b, 0x6c, 0x4c, 0xae, 0xec, 0xa5,
-  0xf5, 0xf7, 0xfc, 0x74, 0xf2, 0x77, 0x21, 0xa2,
-  0xb1, 0x9f, 0xf6, 0xa6, 0x5f, 0xf9, 0xa2, 0xfe,
-  0xe7, 0x46, 0xb4, 0xc6, 0xe9, 0x2e, 0x18, 0x40,
-  0xdc, 0xae, 0x7f, 0xf2, 0xfe, 0xfa, 0xf4, 0x5f,
-  0xe2, 0x28, 0x9d, 0x3f, 0xec, 0xda, 0xd9, 0x5a,
-  0x5e, 0xb6, 0x3a, 0x7f, 0xff, 0xef, 0xe9, 0x46,
-  0x26, 0xef, 0xe8, 0xdf, 0xbb, 0x29, 0x7e, 0x69,
-  0xf0, 0x54, 0xe9, 0xfd, 0xaa, 0xa8, 0x69, 0xed,
-  0xc1, 0xa0, 0xe9, 0xd6, 0xf3, 0xb1, 0x38, 0xb4,
-  0x45, 0xb2, 0x4d, 0xcf, 0xf5, 0x1f, 0xa6, 0xd1,
-  0xa3, 0xa7, 0xdd, 0xfa, 0x34, 0xa9, 0xd1, 0xf3,
-  0xc1, 0xa8, 0xc4, 0xf2, 0x8f, 0x7c, 0xe9, 0xea,
-  0xd5, 0x40, 0x74, 0x58, 0xf0, 0x02, 0x3f, 0x3e,
-  0x57, 0x83, 0x47, 0x9d, 0x39, 0x7e, 0xf3, 0xa1,
-  0xa3, 0xc3, 0xb9, 0x44, 0xfc, 0xac, 0xcf, 0xfb,
-  0x59, 0xd2, 0xa9, 0xd1, 0xe3, 0x7d, 0xc5, 0xd3,
-  0x01, 0x4a, 0x98, 0x21, 0x2a, 0x3c, 0x6a, 0xc2,
-  0x2b, 0x3f, 0xb9, 0xff, 0xcb, 0xdb, 0xc5, 0x38,
-  0xd0, 0xcf, 0x6d, 0xd4, 0xd4, 0xe9, 0xcb, 0xf6,
-  0x8e, 0x9b, 0xea, 0x74, 0x34, 0x6c, 0x44, 0x72,
-  0x78, 0x41, 0x8d, 0xe7, 0x4e, 0xde, 0x3a, 0xce,
-  0x85, 0x45, 0xbe, 0x2a, 0x78, 0x86, 0xc4, 0x73,
-  0x5a, 0xe7, 0x4e, 0x08, 0x42, 0x54, 0xff, 0xd8,
-  0x9b, 0x2d, 0x1b, 0xf2, 0xdd, 0x49, 0x4e, 0x2f,
-  0x27, 0xbc, 0x2d, 0xfb, 0x1d, 0x21, 0x3a, 0x7c,
-  0xcf, 0x5c, 0x1c, 0x74, 0x50, 0x7b, 0x7a, 0xb2,
-  0x5d, 0x03, 0xe7, 0xf2, 0x7a, 0xbf, 0xc6, 0xdc,
-  0x74, 0xd9, 0x73, 0xa2, 0x93, 0xc8, 0xb1, 0x9c,
-  0xff, 0xf5, 0xfd, 0x5b, 0x66, 0xdf, 0xc6, 0xdf,
-  0xca, 0x9d, 0x27, 0x2a, 0xe4, 0xe6, 0xcc, 0x58,
-  0xca, 0x2c, 0x2c, 0x6c, 0xb4, 0x3e, 0x78, 0xef,
-  0xe6, 0x55, 0x85, 0x85, 0xdf, 0x77, 0x91, 0xcf,
-  0x85, 0x3b, 0x90, 0xd1, 0x5b, 0xcf, 0xfb, 0x9e,
-  0xec, 0x14, 0xee, 0x43, 0x44, 0xe1, 0x27, 0x61,
-  0xfb, 0x30, 0xc2, 0x7c, 0x29, 0xdc, 0x86, 0x8b,
-  0x46, 0x7b, 0x1a, 0xf6, 0xb3, 0xa4, 0xec, 0x3d,
-  0x4b, 0x18, 0x4f, 0x27, 0x72, 0x1a, 0x2d, 0xa9,
-  0xfa, 0xca, 0xc5, 0xf6, 0xc7, 0x4c, 0xec, 0x13,
-  0xd8, 0xb9, 0x5c, 0xfe, 0x76, 0x0a, 0x77, 0x21,
-  0xa2, 0xe5, 0x9f, 0xce, 0xc1, 0x4e, 0xe4, 0x34,
-  0x5d, 0xb0, 0xac, 0xd5, 0xca, 0x0a, 0x1f, 0x1d,
-  0x06, 0xd0, 0xcf, 0xd7, 0x2b, 0x3b, 0xd3, 0xa7,
-  0x7a, 0xb8, 0xc8, 0x2c, 0xf7, 0xf7, 0xfa, 0x96,
-  0x5c, 0xee, 0x7f, 0x3b, 0x05, 0x3b, 0x90, 0xd1,
-  0x53, 0xcf, 0x27, 0x72, 0x1a, 0x2b, 0x99, 0xfc,
-  0xec, 0x14, 0xee, 0x43, 0x45, 0x9d, 0x02, 0x7c,
-  0xd6, 0x2b, 0x9f, 0x0a, 0x77, 0x21, 0xa2, 0x42,
-  0x9f, 0xef, 0x53, 0x5b, 0xfd, 0x59, 0x53, 0xa6,
-  0x7b, 0xb0, 0xfa, 0x80, 0x61, 0x3c, 0xdd, 0x2c,
-  0xac, 0x3a, 0x7f, 0x65, 0xab, 0x5c, 0x1a, 0x0e,
-  0x93, 0xb1, 0x31, 0x1e, 0x84, 0x5d, 0x4b, 0x6e,
-  0x4f, 0x3f, 0xf9, 0xcc, 0xe7, 0xbb, 0x05, 0x3b,
-  0x90, 0xd1, 0x3e, 0x42, 0x2a, 0x4b, 0xd5, 0xc7,
-  0x65, 0x64, 0x79, 0xf0, 0xa7, 0x72, 0x1a, 0x2b,
-  0x29, 0xff, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68,
-  0x9b, 0xa6, 0xf3, 0xb0, 0xfd, 0x98, 0x61, 0x3e,
-  0x14, 0xee, 0x43, 0x44, 0xad, 0x3f, 0xda, 0xed,
-  0xed, 0xda, 0x26, 0x54, 0xe9, 0xf3, 0x99, 0xcf,
-  0x76, 0x1f, 0x6f, 0x18, 0x4f, 0x85, 0x3b, 0x90,
-  0xd1, 0x2e, 0x4f, 0xf7, 0xb9, 0xf7, 0xfa, 0xb2,
-  0xa7, 0x4f, 0x36, 0xf7, 0xd4, 0xe9, 0xf3, 0x99,
-  0xcf, 0x76, 0x22, 0x2e, 0xc6, 0x1c, 0x71, 0x3f,
-  0xf3, 0xb9, 0xee, 0xc1, 0x4e, 0xe4, 0x34, 0x47,
-  0x73, 0xfd, 0x7b, 0x63, 0xdd, 0xdf, 0xa9, 0xd3,
-  0xf3, 0x73, 0xea, 0x99, 0xf3, 0xa7, 0xed, 0x53,
-  0xf9, 0x6e, 0xb9, 0xd3, 0xe1, 0x4e, 0xe4, 0x34,
-  0x54, 0x33, 0xec, 0xb5, 0xf2, 0x83, 0xa4, 0xed,
-  0x51, 0x16, 0xed, 0xc2, 0xfc, 0x31, 0xb9, 0x84,
-  0xf8, 0x53, 0xb9, 0x0d, 0x15, 0x44, 0xff, 0xb9,
-  0xee, 0xc1, 0x4e, 0xe4, 0x34, 0x4d, 0x72, 0x76,
-  0x1f, 0xb3, 0x0c, 0x27, 0xf3, 0xb0, 0x53, 0xb9,
-  0x0d, 0x15, 0x64, 0xff, 0xce, 0xe7, 0xbb, 0x05,
-  0x3b, 0x90, 0xd1, 0x22, 0x4f, 0x85, 0x3b, 0x90,
-  0xd1, 0x69, 0x4f, 0xfb, 0x9e, 0xec, 0x14, 0xee,
-  0x43, 0x44, 0xfb, 0x27, 0x61, 0xfb, 0x30, 0xc2,
-  0x7f, 0xf3, 0x99, 0xcf, 0x76, 0x0a, 0x77, 0x21,
-  0xa2, 0x84, 0x9f, 0x5b, 0xd4, 0x28, 0x9d, 0x3e,
-  0x14, 0xee, 0x43, 0x45, 0x1f, 0x3f, 0xff, 0x66,
-  0xd6, 0x5d, 0xee, 0xbf, 0xf8, 0x15, 0xaa, 0x80,
-  0xa9, 0xf3, 0x99, 0xcf, 0x72, 0xa2, 0xd3, 0x09,
-  0xf5, 0x0c, 0x21, 0x57, 0x6b, 0xa8, 0x86, 0x43,
-  0xd2, 0xf1, 0x33, 0x5c, 0x3b, 0xd2, 0x18, 0x34,
-  0x93, 0xb4, 0x77, 0x68, 0x61, 0x00, 0x9e, 0xf1,
-  0x83, 0x4f, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x22,
-  0x29, 0xfb, 0x05, 0x3b, 0x90, 0xd1, 0x15, 0xcf,
-  0xf6, 0xad, 0xd8, 0x29, 0xdc, 0x86, 0x8a, 0xe2,
-  0x1c, 0x7f, 0x5c, 0x6b, 0x3d, 0x96, 0xeb, 0x9d,
-  0x3f, 0xb3, 0xc2, 0x00, 0x69, 0x53, 0xa5, 0xaa,
-  0x7c, 0xf4, 0xea, 0x41, 0x3f, 0xf7, 0x79, 0xfe,
-  0xfd, 0xf4, 0xb0, 0xe1, 0xd3, 0xec, 0xf6, 0xc3,
-  0x87, 0x4e, 0xbd, 0x7d, 0x63, 0xea, 0xba, 0x24,
-  0xf8, 0x53, 0xb9, 0x0d, 0x14, 0xf4, 0x37, 0x11,
-  0xf6, 0xb0, 0x97, 0xc3, 0x49, 0xff, 0xdc, 0xf7,
-  0x6d, 0xfe, 0x0d, 0x6a, 0xa0, 0x3a, 0x1c, 0x88,
-  0x1d, 0x8d, 0xe7, 0x3b, 0x6c, 0x3a, 0x7c, 0xaf,
-  0x06, 0x8f, 0x3a, 0x79, 0x3b, 0x90, 0xd1, 0x59,
-  0xc3, 0x47, 0xa6, 0x25, 0x13, 0xf5, 0x0c, 0x5f,
-  0xbe, 0xa7, 0x4e, 0x5a, 0x3c, 0x74, 0xfa, 0xe0,
-  0xdf, 0xf7, 0x9d, 0x3e, 0xc6, 0xa8, 0xd0, 0x07,
-  0x49, 0xd8, 0x8c, 0x01, 0x22, 0xb1, 0x77, 0x0e,
-  0x6f, 0x2a, 0x9f, 0xf9, 0xdc, 0xf7, 0x60, 0xa7,
-  0x72, 0x1a, 0x24, 0x59, 0xfc, 0xec, 0x14, 0xee,
-  0x43, 0x45, 0x93, 0x3f, 0x9d, 0x82, 0x9d, 0xc8,
-  0x68, 0xb6, 0x27, 0x65, 0x70, 0xe9, 0xf0, 0xa7,
-  0x72, 0x1a, 0x2d, 0xb9, 0x39, 0xe7, 0x95, 0x83,
-  0x53, 0xfe, 0x6e, 0x37, 0x35, 0x5a, 0xf6, 0xcf,
-  0xa8, 0x0e, 0x9f, 0x97, 0xef, 0xdb, 0x46, 0x1d,
-  0x3e, 0x14, 0xee, 0x43, 0x45, 0xe1, 0x3d, 0x7d,
-  0x4c, 0xb1, 0xd3, 0xff, 0x2e, 0xf6, 0x52, 0xfb,
-  0xe7, 0xef, 0x53, 0xa7, 0xd9, 0xf0, 0x37, 0xa9,
-  0xd3, 0xe5, 0xdf, 0xa7, 0x54, 0xe9, 0xd7, 0x50,
-  0x1d, 0x27, 0x6a, 0xbc, 0x9c, 0x25, 0x09, 0xb8,
-  0x5f, 0x49, 0x85, 0x89, 0x00, 0x8f, 0xf2, 0x9b,
-  0x94, 0xce, 0xf6, 0x52, 0x74, 0xf8, 0x53, 0xb9,
-  0x0d, 0x17, 0xa4, 0xff, 0xbf, 0xd7, 0x7a, 0xeb,
-  0xbf, 0xa8, 0x3a, 0x7d, 0x8c, 0xb7, 0x6c, 0x74,
-  0x9d, 0xb2, 0x2d, 0x30, 0x73, 0x79, 0x83, 0x7a,
-  0x0c, 0x2b, 0x21, 0xf2, 0x88, 0x5a, 0xe4, 0x7e,
-  0x08, 0x49, 0xe8, 0xcb, 0xc5, 0x3d, 0x89, 0x80,
-  0x3b, 0xfc, 0x21, 0x74, 0x8e, 0xac, 0x31, 0x9b,
-  0x4f, 0x65, 0xba, 0xe7, 0x4f, 0xec, 0xf0, 0x80,
-  0x1a, 0x54, 0xe9, 0x6a, 0x9f, 0x3d, 0x3a, 0x90,
-  0x4f, 0x85, 0x3b, 0x90, 0xd1, 0x11, 0xcf, 0xff,
-  0x5b, 0x4a, 0xd7, 0x19, 0xfc, 0x6d, 0xb9, 0x5b,
-  0xa9, 0xd3, 0xfe, 0x7a, 0xd0, 0x39, 0x7b, 0xfa,
-  0xe7, 0x4f, 0xff, 0xf2, 0xdb, 0xbd, 0x75, 0xb7,
-  0xf2, 0xf6, 0xf5, 0xb3, 0xc1, 0x3a, 0x6a, 0x18,
-  0x54, 0xc1, 0x09, 0x53, 0xff, 0x3d, 0xc9, 0x6f,
-  0x35, 0x65, 0xa1, 0xc0, 0x35, 0xa1, 0x17, 0x9f,
-  0xd9, 0xab, 0xfe, 0x5b, 0xae, 0x74, 0xff, 0xfc,
-  0x8e, 0x1e, 0xff, 0xae, 0xe1, 0x5b, 0xff, 0x80,
-  0x74, 0x37, 0x15, 0x38, 0xe1, 0x6a, 0x18, 0x52,
-  0xb4, 0x27, 0xdd, 0x09, 0x2b, 0xae, 0xb6, 0x35,
-  0x9f, 0x0a, 0x77, 0x21, 0xa2, 0x2e, 0x9f, 0x5c,
-  0x1b, 0xfe, 0xf2, 0xd9, 0xed, 0x27, 0x61, 0xf3,
-  0xf1, 0x84, 0x39, 0x30, 0x87, 0xc3, 0x8a, 0x7f,
-  0xe6, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68, 0x99,
-  0xa7, 0x52, 0xb5, 0x3a, 0x72, 0x79, 0x87, 0x4e,
-  0xd5, 0x5a, 0x9a, 0xa8, 0xe9, 0xf2, 0x75, 0xbc,
-  0xd1, 0xd3, 0xff, 0x37, 0xfa, 0xfe, 0x4f, 0x6d,
-  0x7c, 0x43, 0xa7, 0xff, 0xfb, 0x4e, 0xfa, 0x7f,
-  0x36, 0xb6, 0x9b, 0xac, 0xaf, 0x15, 0xa0, 0xe8,
-  0xc4, 0x58, 0xd9, 0x1e, 0x7f, 0xfd, 0xb7, 0xbf,
-  0x46, 0x57, 0xdd, 0x67, 0x04, 0x21, 0x2a, 0x79,
-  0x3b, 0x90, 0xd1, 0x67, 0xcf, 0xff, 0x78, 0x6d,
-  0xdb, 0xb1, 0xb7, 0xf2, 0xb9, 0xf3, 0xa7, 0x04,
-  0x21, 0x2a, 0x7f, 0xdc, 0xfa, 0xff, 0x13, 0x6c,
-  0x12, 0x9c, 0x5e, 0x4f, 0xf2, 0xdb, 0xdb, 0x7f,
-  0xb9, 0xa3, 0xa7, 0xfb, 0xdf, 0xdb, 0x7e, 0xda,
-  0x5e, 0xa7, 0x42, 0x27, 0x66, 0x2b, 0x16, 0x2b,
-  0x03, 0x6d, 0xd2, 0xdb, 0x1c, 0xcf, 0xff, 0xff,
-  0xd9, 0x80, 0xae, 0x67, 0xf5, 0xef, 0x1f, 0xae,
-  0x59, 0xd5, 0xfe, 0x50, 0xcc, 0x61, 0xd3, 0xaa,
-  0xb4, 0x1d, 0x3b, 0x53, 0x2c, 0x74, 0x3d, 0x18,
-  0x95, 0x84, 0x55, 0xc7, 0x27, 0xa9, 0x06, 0x88,
-  0x74, 0xfa, 0xdf, 0x5c, 0x13, 0x27, 0xfd, 0xe1,
-  0x7e, 0x0d, 0x1a, 0x76, 0xc6, 0x88, 0x35, 0xc6,
-  0x96, 0x7d, 0xc9, 0xe6, 0x29, 0xd3, 0xf3, 0xed,
-  0xfe, 0xa6, 0xe7, 0x4b, 0x10, 0xf4, 0xfe, 0x4b,
-  0x3f, 0xff, 0xee, 0x0d, 0xf2, 0xd7, 0x5c, 0xfd,
-  0x37, 0xc1, 0xf5, 0x1c, 0xc3, 0xa1, 0xe9, 0xa0,
-  0x64, 0x2b, 0xfe, 0x4d, 0x3f, 0x0e, 0x6d, 0x5b,
-  0x29, 0xd3, 0xff, 0xfb, 0x4f, 0xf6, 0xbd, 0xdb,
-  0xff, 0xd7, 0xaf, 0xa9, 0xb7, 0x82, 0x74, 0xff,
-  0xff, 0x56, 0xaa, 0x37, 0x57, 0x33, 0x2f, 0x5d,
-  0xf5, 0xe7, 0xe1, 0xd3, 0xd6, 0xcf, 0x36, 0x3a,
-  0x3c, 0x88, 0x9b, 0x33, 0x4c, 0xcd, 0x50, 0xd1,
-  0x7e, 0x4f, 0xfc, 0xfb, 0xe8, 0xf7, 0xb2, 0xf7,
-  0x56, 0x1d, 0x3f, 0xf7, 0xb3, 0xf9, 0x95, 0xdc,
-  0xfa, 0xb0, 0xe8, 0xa5, 0x11, 0x75, 0x46, 0x9e,
-  0xff, 0xd5, 0x0e, 0x85, 0x4c, 0x6b, 0x62, 0x3c,
-  0x85, 0x9f, 0x12, 0x4f, 0xff, 0xfc, 0xde, 0xb6,
-  0xf3, 0x1c, 0xd3, 0xf8, 0x77, 0xdb, 0xd4, 0xd5,
-  0x3d, 0x41, 0xd3, 0xed, 0x32, 0xbe, 0xf9, 0xd3,
-  0xdb, 0xf4, 0xea, 0x9d, 0x3f, 0xeb, 0xd4, 0x1e,
-  0xa6, 0x97, 0xe5, 0xce, 0x85, 0x3e, 0x5c, 0x24,
-  0x99, 0xad, 0x0e, 0x93, 0x0e, 0x8a, 0x4d, 0x43,
-  0x76, 0x31, 0x3f, 0xff, 0xeb, 0x7a, 0x9b, 0xe5,
-  0x37, 0x11, 0x5b, 0x83, 0x7f, 0xdf, 0x6c, 0x3a,
-  0x70, 0x42, 0x12, 0xa7, 0xb6, 0xdb, 0xbe, 0x53,
-  0x8b, 0xc9, 0xff, 0x75, 0x93, 0xdd, 0xba, 0xbd,
-  0x63, 0xa1, 0x53, 0x22, 0x42, 0x7f, 0x42, 0x2e,
-  0xc6, 0x53, 0xff, 0x67, 0xe9, 0xbe, 0x0f, 0xa8,
-  0xe6, 0x1d, 0x3e, 0xcb, 0xbd, 0x96, 0x3a, 0x14,
-  0xfa, 0xea, 0x89, 0x30, 0x2c, 0x74, 0xfd, 0x43,
-  0x4f, 0x6e, 0x0d, 0x07, 0x4f, 0xed, 0x76, 0xcb,
-  0xdb, 0xd7, 0x3a, 0x6f, 0x09, 0xd1, 0xaa, 0x8f,
-  0xfb, 0xc6, 0x96, 0x35, 0x9f, 0xfd, 0xb6, 0xcb,
-  0xb0, 0xad, 0xfc, 0x9e, 0xd8, 0xe9, 0x39, 0xba,
-  0x33, 0x3a, 0xb5, 0x58, 0x71, 0x46, 0xe8, 0x2b,
-  0xda, 0x1b, 0x19, 0x1e, 0xad, 0x31, 0x8e, 0x78,
-  0xd5, 0xa8, 0xe2, 0x04, 0xd5, 0x85, 0x96, 0x94,
-  0x1b, 0xc8, 0x20, 0x7a, 0xfc, 0x23, 0x6b, 0x1b,
-  0x55, 0xe1, 0x58, 0x12, 0x1d, 0x48, 0x4a, 0x6f,
-  0x35, 0x87, 0x33, 0xa4, 0xad, 0x4d, 0x36, 0x9f,
-  0xfc, 0xe6, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68,
-  0x9b, 0x27, 0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x15,
-  0x6c, 0xfe, 0x7b, 0xf4, 0xbf, 0xd5, 0xe7, 0x4f,
-  0x65, 0xba, 0xe7, 0x4b, 0x54, 0xc3, 0xd4, 0xf9,
-  0xa4, 0xf8, 0x53, 0xb9, 0x0d, 0x15, 0xa4, 0xff,
-  0xf2, 0x28, 0xe0, 0x39, 0x9c, 0xf5, 0xf2, 0x1d,
-  0x3f, 0xfc, 0xfa, 0xe7, 0xd5, 0x9d, 0x97, 0xba,
-  0xb0, 0xe9, 0xaf, 0x75, 0x44, 0xbf, 0x25, 0x4f,
-  0xe5, 0x6d, 0xbe, 0xff, 0x50, 0x1d, 0x3f, 0x51,
-  0x96, 0xf6, 0x30, 0xe9, 0xfe, 0xc6, 0xff, 0xa8,
-  0x69, 0x7d, 0x4e, 0x9f, 0xcf, 0xcb, 0xf7, 0xc1,
-  0xa1, 0xd2, 0x73, 0x71, 0x3f, 0x2c, 0x2c, 0xf4,
-  0x31, 0xec, 0x5b, 0xc6, 0xdf, 0x2d, 0xb9, 0xe4,
-  0xfe, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0xc0, 0x9f,
-  0x0a, 0x77, 0x21, 0xa2, 0x75, 0x9f, 0xff, 0xd6,
-  0x5a, 0x36, 0xc6, 0x3a, 0xb5, 0xcb, 0x7a, 0xba,
-  0x50, 0x74, 0xf9, 0xcc, 0xe7, 0xbb, 0x11, 0x2a,
-  0xd1, 0x84, 0xf8, 0x53, 0xb9, 0x0d, 0x16, 0xcc,
-  0xff, 0x80, 0xb5, 0x75, 0xbc, 0x9c, 0x27, 0x49,
-  0xd8, 0x7d, 0x9c, 0x61, 0x3c, 0x9d, 0xc8, 0x68,
-  0xb9, 0xa4, 0xc3, 0xa6, 0x76, 0x09, 0xbb, 0x09,
-  0x5c, 0xfe, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0xef,
-  0x9e, 0x76, 0xbd, 0x80, 0x74, 0x2b, 0x69, 0x31,
-  0x94, 0xeb, 0xb4, 0x30, 0xa5, 0x4b, 0xd2, 0xa0,
-  0x45, 0xc9, 0x90, 0xd0, 0x04, 0x2b, 0x2a, 0xc3,
-  0x72, 0xbd, 0xe7, 0x73, 0xfe, 0xff, 0x39, 0x6b,
-  0x56, 0x73, 0xce, 0x9f, 0xdf, 0xa3, 0x1b, 0xee,
-  0xba, 0xce, 0x9f, 0x0a, 0x77, 0x21, 0xa2, 0x57,
-  0x9e, 0xd3, 0x85, 0xe7, 0x4f, 0xff, 0xef, 0x5f,
-  0x99, 0xdf, 0x05, 0x83, 0xdf, 0xa1, 0x3d, 0x41,
-  0xd2, 0xb6, 0xc8, 0x83, 0xe2, 0x19, 0xdc, 0xf7,
-  0x2a, 0x62, 0x98, 0x71, 0x58, 0x59, 0xce, 0xba,
-  0xec, 0x54, 0xff, 0xeb, 0x77, 0xae, 0xaf, 0xf0,
-  0xd1, 0xa0, 0x0a, 0x9f, 0xdc, 0x8e, 0xd8, 0x5b,
-  0xb7, 0x29, 0xf3, 0xd4, 0x72, 0x4e, 0x45, 0x49,
-  0x6c, 0x8d, 0x45, 0xb4, 0x2b, 0x27, 0xff, 0x39,
-  0x9c, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x26, 0x19,
-  0xff, 0xfb, 0x1d, 0xbc, 0x78, 0x0e, 0xd7, 0x77,
-  0x85, 0x6a, 0xf3, 0xa7, 0xfe, 0xd5, 0x32, 0x97,
-  0xe9, 0xd7, 0xfa, 0xbc, 0xe9, 0xfe, 0xfa, 0xf5,
-  0x17, 0xd7, 0xc2, 0x74, 0xfc, 0xc5, 0xcf, 0xdf,
-  0x50, 0xe9, 0xf2, 0xe7, 0xef, 0xa8, 0x74, 0xfd,
-  0x6f, 0x5e, 0xbd, 0x4e, 0xe3, 0xd8, 0x61, 0x7c,
-  0xff, 0xff, 0xbf, 0x81, 0x6f, 0xbe, 0x5b, 0x77,
-  0xf2, 0x8f, 0x67, 0xe9, 0x7d, 0x4e, 0x9f, 0x9b,
-  0x6f, 0xbf, 0xd4, 0x07, 0x4f, 0xfe, 0x5b, 0x81,
-  0x5f, 0x94, 0xde, 0x8d, 0x02, 0x74, 0x29, 0xfe,
-  0xf8, 0xc6, 0x7e, 0xaf, 0xb5, 0xb3, 0xae, 0x74,
-  0xff, 0xff, 0x87, 0x1b, 0x2f, 0xef, 0xbb, 0x7f,
-  0xd6, 0xdd, 0xeb, 0xad, 0xea, 0x74, 0xb2, 0x94,
-  0x4f, 0x89, 0x7c, 0xf7, 0xd4, 0x1b, 0xce, 0x9e,
-  0xed, 0xfb, 0x61, 0xd2, 0x73, 0x71, 0x5a, 0x0e,
-  0xc9, 0x49, 0x09, 0x16, 0x92, 0x2d, 0x0f, 0x0f,
-  0xc3, 0x02, 0xe5, 0x1a, 0x11, 0xcf, 0x85, 0x3b,
-  0x90, 0xd1, 0x57, 0x4f, 0xf3, 0xdd, 0x82, 0x9d,
-  0xc8, 0x68, 0x8f, 0x24, 0xec, 0x3f, 0x1e, 0x30,
-  0x9f, 0xce, 0xc1, 0x4e, 0xe4, 0x34, 0x58, 0x33,
-  0xf9, 0xd8, 0x29, 0xdc, 0x86, 0x8b, 0x2a, 0x7f,
-  0x3b, 0x05, 0x3b, 0x90, 0xd1, 0x69, 0xcf, 0x27,
-  0x72, 0x1a, 0x2d, 0xc9, 0xff, 0x97, 0x07, 0x3f,
-  0xba, 0xd9, 0x48, 0x4e, 0x81, 0x3e, 0xfa, 0x95,
+  0xf6, 0xed, 0x79, 0xf0, 0x1d, 0x3f, 0xfd, 0x94,
+  0xbe, 0xfa, 0x50, 0xeb, 0x73, 0x3d, 0x53, 0xa6,
+  0xb3, 0xb1, 0x13, 0x1f, 0x45, 0x87, 0x26, 0x7a,
+  0xb1, 0x87, 0xcf, 0xe7, 0x60, 0xa7, 0x72, 0x1a,
+  0x2c, 0xd9, 0xff, 0xce, 0x67, 0x3d, 0xd8, 0x29,
+  0xdc, 0x86, 0x8a, 0x02, 0x7f, 0x7f, 0x2e, 0x0d,
+  0xff, 0x68, 0xe9, 0xb7, 0x54, 0xe9, 0xe4, 0xee,
+  0x43, 0x45, 0xbf, 0x3f, 0x6f, 0xbf, 0x27, 0x09,
+  0xd0, 0x27, 0xae, 0x02, 0xb9, 0xf5, 0xdf, 0x5d,
+  0xf5, 0x3a, 0x7f, 0x2b, 0x6d, 0xf7, 0xfa, 0x80,
+  0xe9, 0xee, 0xf7, 0xee, 0x74, 0xfe, 0xd2, 0x9a,
+  0xaa, 0x63, 0x0e, 0x9d, 0xfc, 0x79, 0xd2, 0x72,
+  0xa7, 0x2a, 0xf3, 0x6c, 0x6f, 0x12, 0x1b, 0x15,
+  0x00, 0xdb, 0xe4, 0x37, 0x33, 0x9f, 0xf7, 0x3d,
+  0xd8, 0x29, 0xdc, 0x86, 0x8a, 0x52, 0x7f, 0x9e,
+  0xec, 0x14, 0xee, 0x43, 0x44, 0x9d, 0x27, 0x31,
+  0x10, 0xfc, 0x8d, 0x0a, 0xee, 0x2e, 0x68, 0x8c,
+  0x8b, 0x6b, 0x5a, 0xa3, 0x91, 0xd3, 0xa4, 0x2c,
+  0x7c, 0x4f, 0xab, 0x85, 0x63, 0x44, 0xcc, 0x97,
+  0x0d, 0x62, 0x90, 0x1d, 0xd6, 0x3e, 0x76, 0xd0,
+  0xfc, 0x9f, 0x0a, 0x77, 0x21, 0xa2, 0x1f, 0x9f,
+  0xf7, 0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x89, 0x4e,
+  0x4e, 0xc3, 0xf6, 0x61, 0x84, 0xfe, 0x76, 0x0a,
+  0x77, 0x21, 0xa2, 0x27, 0x9f, 0xce, 0xc1, 0x4e,
+  0xe4, 0x34, 0x46, 0x33, 0xff, 0x9c, 0xce, 0x7b,
+  0xb0, 0x53, 0xb9, 0x0d, 0x13, 0xcc, 0x2a, 0x3b,
+  0xe8, 0x27, 0x79, 0xdd, 0x8e, 0xe7, 0xc2, 0x9d,
+  0xc8, 0x68, 0x88, 0x27, 0xfd, 0xcf, 0x76, 0x0a,
+  0x77, 0x21, 0xa2, 0x54, 0x93, 0xb0, 0xfd, 0x98,
+  0x61, 0x3f, 0x9d, 0x82, 0x9d, 0xc8, 0x68, 0x8a,
+  0x27, 0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x11, 0x94,
+  0xff, 0xe7, 0x33, 0x9e, 0xec, 0x14, 0xee, 0x43,
+  0x44, 0xcb, 0x3f, 0x9d, 0x82, 0x9d, 0xc8, 0x68,
+  0xa9, 0x27, 0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x15,
+  0xd4, 0xfe, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0xc5,
+  0x9f, 0xf9, 0x9c, 0xf7, 0x60, 0xa7, 0x72, 0x1a,
+  0x27, 0xa9, 0xfe, 0x0b, 0xb9, 0x7d, 0xa9, 0xe6,
+  0xf3, 0xa1, 0xc8, 0x8a, 0x54, 0xc9, 0xfb, 0x55,
+  0xd9, 0x7f, 0x69, 0x53, 0xa7, 0x85, 0x97, 0xa4,
+  0xe9, 0xc9, 0x96, 0x2a, 0x7f, 0xfe, 0xb7, 0xfb,
+  0x5f, 0x85, 0x5e, 0xfc, 0xa8, 0x00, 0xa7, 0x4f,
+  0xff, 0xc3, 0xe6, 0xfe, 0x63, 0x94, 0x47, 0xcd,
+  0xe9, 0xa5, 0x07, 0x4f, 0x93, 0xd6, 0xde, 0xc3,
+  0xa7, 0xff, 0x75, 0x7f, 0x80, 0x75, 0xbc, 0x9c,
+  0x27, 0x4f, 0xaf, 0x65, 0x62, 0x1d, 0x3f, 0xfb,
+  0xfb, 0x95, 0x7e, 0xac, 0xdd, 0xba, 0xda, 0x87,
+  0x4d, 0xd4, 0x9d, 0x3f, 0xba, 0xbd, 0x6d, 0x3f,
+  0x41, 0xd1, 0xf3, 0xca, 0xd0, 0x5a, 0x3c, 0xa8,
+  0x40, 0x56, 0xd8, 0xc1, 0x62, 0x9f, 0xa3, 0xdc,
+  0x99, 0xbe, 0x13, 0x93, 0xbf, 0xd7, 0x35, 0x42,
+  0xd3, 0xbf, 0xea, 0x9d, 0x20, 0xea, 0x87, 0x88,
+  0xa5, 0x13, 0xc2, 0xdb, 0x98, 0x74, 0x61, 0xe7,
+  0x78, 0xb2, 0x7f, 0xde, 0xb7, 0x5d, 0x5a, 0xaf,
+  0x98, 0x74, 0xfd, 0xef, 0xeb, 0xf6, 0x54, 0xe9,
+  0xef, 0xed, 0xbb, 0x59, 0xd3, 0xf6, 0x54, 0x3d,
+  0xfa, 0x0e, 0x8e, 0x3d, 0x4f, 0x93, 0xcf, 0xb4,
+  0xd7, 0x5d, 0x94, 0xe8, 0xc4, 0x67, 0xfa, 0x10,
+  0x76, 0x21, 0x9f, 0xff, 0xfd, 0x65, 0xf0, 0x8a,
+  0xef, 0xbf, 0xbf, 0xa3, 0xf2, 0xbb, 0x69, 0xc2,
+  0xf3, 0xa7, 0xd4, 0x6c, 0x3e, 0x09, 0xd3, 0xf6,
+  0xdc, 0x20, 0xd4, 0xc3, 0xa7, 0xfd, 0xff, 0x3e,
+  0xf6, 0xc1, 0xf5, 0x4e, 0x9f, 0xf7, 0x60, 0x17,
+  0xfd, 0xb6, 0x6b, 0x3a, 0x1e, 0x7f, 0x80, 0x3e,
+  0x9f, 0xfc, 0xb9, 0x4d, 0xec, 0xb7, 0xfa, 0x82,
+  0xa7, 0x4e, 0xad, 0x98, 0x74, 0x5c, 0xf9, 0x74,
+  0x49, 0x9f, 0xb4, 0xad, 0xeb, 0x97, 0x3a, 0x70,
+  0x42, 0x12, 0xa7, 0xff, 0x5f, 0xd7, 0xad, 0xbd,
+  0xa9, 0xbc, 0x55, 0xe5, 0x38, 0xbc, 0x8f, 0x22,
+  0xa3, 0x44, 0xa8, 0x7a, 0xac, 0x4c, 0x7a, 0xf1,
+  0x48, 0xc2, 0xaf, 0xf0, 0x87, 0xbc, 0x32, 0xe6,
+  0xd7, 0x87, 0x4f, 0x83, 0x75, 0xa4, 0x27, 0x4f,
+  0xe5, 0xe1, 0xb0, 0x7b, 0x62, 0xa6, 0x08, 0x4a,
+  0x8d, 0x8f, 0x1c, 0x26, 0x33, 0xd5, 0xbf, 0xb5,
+  0x65, 0x38, 0xd1, 0xcf, 0xfe, 0xd2, 0xb5, 0xdb,
+  0xeb, 0xb5, 0x96, 0xf5, 0x3a, 0x7f, 0xd7, 0xf0,
+  0xf0, 0x1b, 0xef, 0x96, 0x3a, 0x1e, 0x88, 0xdf,
+  0x26, 0xcf, 0xb2, 0x8c, 0xf0, 0x9d, 0x3f, 0x5d,
+  0x47, 0x6c, 0xf9, 0xd3, 0xfb, 0x6b, 0x2f, 0xc3,
+  0xd4, 0x9d, 0x3f, 0xff, 0xef, 0x33, 0xbf, 0x4b,
+  0xdc, 0x1c, 0xf3, 0x6c, 0xfe, 0x6d, 0xcf, 0x3c,
+  0x5e, 0xb0, 0xa8, 0xdc, 0xe2, 0xcd, 0x0d, 0x27,
+  0xff, 0xb2, 0xf5, 0xc6, 0xac, 0xad, 0xb2, 0xd6,
+  0x53, 0xa7, 0xff, 0xff, 0xde, 0xca, 0x6b, 0xec,
+  0x0e, 0xec, 0xa5, 0xf5, 0xf5, 0xeb, 0xea, 0x76,
+  0xdb, 0x4a, 0x0e, 0x8f, 0xa3, 0x7a, 0xea, 0x13,
+  0x78, 0x27, 0x4d, 0xbc, 0x07, 0x43, 0x46, 0xb8,
+  0x02, 0xd3, 0x9f, 0xdb, 0x1d, 0x30, 0x42, 0x74,
+  0x78, 0xf5, 0x2a, 0x44, 0x11, 0xc9, 0xd7, 0xde,
+  0x02, 0x9c, 0x6b, 0xe7, 0xff, 0xff, 0x5d, 0x76,
+  0xb6, 0x9d, 0xad, 0x9d, 0xb6, 0x67, 0xf5, 0xd6,
+  0xb9, 0xf0, 0x1d, 0x14, 0xa2, 0xaf, 0xc5, 0xd3,
+  0xfd, 0x97, 0xb2, 0x8d, 0xf1, 0x0e, 0x9c, 0xa2,
+  0xd1, 0xd1, 0x89, 0xf9, 0xf4, 0x6f, 0xff, 0x24,
+  0xd4, 0x35, 0x9f, 0x7f, 0x2f, 0xcd, 0xe7, 0x4f,
+  0xfd, 0x82, 0x38, 0xd5, 0xb2, 0xbd, 0xf3, 0xa7,
+  0xf7, 0xd4, 0x74, 0x4b, 0x29, 0xd3, 0xef, 0x6b,
+  0xb7, 0x3c, 0xe9, 0xfb, 0xca, 0xca, 0x30, 0x27,
+  0x4c, 0x10, 0x9d, 0x08, 0x7d, 0x82, 0x52, 0x12,
+  0xd9, 0xfe, 0xc6, 0xb9, 0xae, 0xa5, 0xf5, 0x29,
+  0xc6, 0xb6, 0x7f, 0xf6, 0x7c, 0x19, 0x6f, 0x53,
+  0x5b, 0x69, 0x53, 0xa7, 0xef, 0xf0, 0x36, 0xcf,
+  0x9d, 0x3f, 0x33, 0xda, 0x98, 0x3a, 0xce, 0x9c,
+  0x10, 0x84, 0xa9, 0xff, 0x94, 0x7f, 0xa7, 0x6f,
+  0xc6, 0x95, 0x87, 0x38, 0xbc, 0x8d, 0x5a, 0xa2,
+  0xe6, 0xa1, 0x95, 0x54, 0xab, 0xa6, 0x68, 0x5a,
+  0x14, 0xd9, 0xdc, 0x34, 0x1e, 0x41, 0x29, 0xe7,
+  0xe5, 0x2f, 0x3c, 0x82, 0x53, 0xab, 0xed, 0x8f,
+  0x20, 0x94, 0xc1, 0x09, 0xe4, 0x12, 0x84, 0x45,
+  0x23, 0x45, 0x17, 0x2f, 0x09, 0x54, 0xdd, 0x72,
+  0xc8, 0x24, 0xe3, 0x7b, 0x3f, 0x65, 0xb3, 0x3f,
+  0xac, 0xe9, 0xdd, 0xf0, 0x7c, 0xf7, 0xee, 0x65,
+  0x3d, 0xa9, 0x9d, 0x63, 0xa5, 0x9a, 0xb3, 0xd6,
+  0x01, 0x9c, 0xfe, 0x69, 0xfa, 0x51, 0x7f, 0x50,
+  0x54, 0xfe, 0xf3, 0xf4, 0xea, 0xdb, 0xc7, 0x49,
+  0xe5, 0x4e, 0xe1, 0xa0, 0xa8, 0x2a, 0x14, 0xda,
+  0xa0, 0x83, 0x06, 0xe7, 0xbe, 0xa0, 0x42, 0x9c,
+  0x6b, 0x21, 0x51, 0x8b, 0x90, 0x95, 0x9e, 0xd3,
+  0x85, 0xe7, 0x49, 0x87, 0x4d, 0x8f, 0xd8, 0xd8,
+  0xb4, 0x43, 0x3e, 0x0e, 0x35, 0xe6, 0x1d, 0x3f,
+  0x22, 0xb4, 0xf5, 0x01, 0x52, 0xf1, 0xd3, 0xfd,
+  0x46, 0x8f, 0xda, 0xda, 0x77, 0xce, 0x9f, 0xbc,
+  0xac, 0xa3, 0x02, 0x74, 0xfb, 0x28, 0x66, 0x30,
+  0xe9, 0xd5, 0xf0, 0x9d, 0x1f, 0x3c, 0x2b, 0x93,
+  0xcf, 0xdf, 0xe0, 0x03, 0x4a, 0x9d, 0x3f, 0x7b,
+  0x5e, 0xf5, 0x63, 0xb6, 0x4c, 0x33, 0x04, 0x04,
+  0xf6, 0xad, 0xf7, 0x22, 0x8c, 0x4f, 0x47, 0xc5,
+  0x1f, 0x8c, 0xe2, 0x7b, 0xf9, 0x46, 0x87, 0x43,
+  0xd5, 0xeb, 0xe1, 0x5d, 0xa1, 0xfb, 0xf5, 0x7a,
+  0xc7, 0xff, 0x73, 0x69, 0xff, 0xf5, 0x02, 0x39,
+  0xb7, 0x32, 0xdd, 0x7f, 0xab, 0x47, 0x4e, 0x08,
+  0x42, 0x54, 0xcf, 0x52, 0x9c, 0x5e, 0x42, 0xa2,
+  0x54, 0x5c, 0x67, 0xea, 0x1a, 0x7b, 0x70, 0x68,
+  0x3a, 0x7a, 0xdd, 0x48, 0x4e, 0x9f, 0x50, 0x3e,
+  0x56, 0x1d, 0x3f, 0xfc, 0xbb, 0xef, 0xf5, 0x07,
+  0x5c, 0x1b, 0xfe, 0xf3, 0xa3, 0x55, 0x23, 0x43,
+  0xc6, 0x9c, 0x45, 0x72, 0x79, 0xcf, 0xf7, 0xce,
+  0x9f, 0xae, 0xad, 0x7f, 0x4a, 0x9d, 0x0f, 0x3c,
+  0xbb, 0x8e, 0x4e, 0xd3, 0x46, 0xec, 0xe9, 0xb9,
+  0xcd, 0xd1, 0xb9, 0x08, 0xd5, 0x63, 0x6d, 0x57,
+  0xe4, 0x4b, 0x28, 0xaa, 0x88, 0x7f, 0xbc, 0x87,
+  0x68, 0xc3, 0xb2, 0x57, 0xc6, 0xb6, 0x64, 0x17,
+  0xf4, 0x24, 0x9a, 0x86, 0x18, 0x91, 0xb2, 0x30,
+  0x2b, 0x4b, 0x00, 0xe4, 0x5f, 0x94, 0xd6, 0x53,
+  0x7d, 0xe7, 0x74, 0x74, 0x87, 0xc6, 0xa4, 0x3c,
+  0x77, 0xc2, 0x35, 0xbc, 0x8a, 0x7f, 0xf3, 0x99,
+  0xcf, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0x8a, 0x9f,
+  0xce, 0xc1, 0x4e, 0xe4, 0x34, 0x5d, 0x13, 0xff,
+  0x3b, 0x9e, 0xec, 0x14, 0xee, 0x43, 0x44, 0x97,
+  0x3f, 0x9d, 0x82, 0x9d, 0xc8, 0x68, 0xbc, 0xa1,
+  0x5b, 0xe1, 0xaa, 0x09, 0xde, 0x77, 0x87, 0x68,
+  0xa4, 0xd1, 0xdb, 0x0e, 0xed, 0x0c, 0x5f, 0xd7,
+  0x25, 0x55, 0x8e, 0xca, 0xea, 0x5a, 0x1d, 0xb6,
+  0x4c, 0x9f, 0xfc, 0xe6, 0x73, 0xdd, 0x82, 0x9d,
+  0xc8, 0x68, 0x96, 0x67, 0x93, 0xb9, 0x0d, 0x11,
+  0x9c, 0xfd, 0xe5, 0x65, 0x18, 0x13, 0xa6, 0xfb,
+  0xce, 0x93, 0x0e, 0x9f, 0x78, 0x6d, 0xce, 0x13,
+  0xd3, 0x61, 0x6e, 0xf1, 0x69, 0xfb, 0x9f, 0xe1,
+  0xe1, 0x3a, 0x75, 0x56, 0x93, 0xa0, 0x53, 0x10,
+  0x63, 0xf7, 0xd3, 0x2e, 0x55, 0x3f, 0xf5, 0xfc,
+  0x3c, 0x0d, 0xd4, 0xbd, 0x58, 0x74, 0xfb, 0xea,
+  0xfa, 0xf1, 0xd1, 0xe3, 0xec, 0x6c, 0x8d, 0x3f,
+  0xff, 0x7b, 0x6d, 0x2f, 0x5a, 0x5e, 0xbf, 0x05,
+  0x77, 0x69, 0xf3, 0xa7, 0xfe, 0xc6, 0x5f, 0xc1,
+  0xaa, 0xdb, 0xb5, 0x67, 0x4f, 0xfa, 0xcb, 0xeb,
+  0x79, 0x7e, 0xd6, 0x87, 0x49, 0xd8, 0x9d, 0xbb,
+  0x50, 0xa9, 0xe2, 0x4f, 0xb1, 0xd5, 0x1e, 0x7f,
+  0xf3, 0x99, 0xcf, 0x76, 0x0a, 0x77, 0x21, 0xa2,
+  0x69, 0x9f, 0xfc, 0xe6, 0x73, 0xdd, 0x82, 0x9d,
+  0xc8, 0x68, 0x9c, 0x67, 0xff, 0x39, 0x9c, 0xf7,
+  0x60, 0xa7, 0x72, 0x1a, 0x28, 0x19, 0xf0, 0xa7,
+  0x72, 0x1a, 0x2e, 0x09, 0x97, 0xc7, 0x4f, 0xef,
+  0xbd, 0x7d, 0xb6, 0x30, 0xe9, 0x3b, 0x0f, 0xe2,
+  0xc6, 0x1a, 0x0a, 0xcf, 0xef, 0x3b, 0x7a, 0x83,
+  0x02, 0x74, 0xff, 0x3d, 0xd8, 0x29, 0xdc, 0x86,
+  0x89, 0x26, 0x4e, 0xb1, 0xfa, 0xf1, 0xa4, 0x50,
+  0xbb, 0x5a, 0xf9, 0x63, 0x28, 0xaa, 0xd2, 0x90,
+  0x14, 0xab, 0x0c, 0xab, 0xc2, 0xaa, 0x7f, 0xda,
+  0xf9, 0xd8, 0x29, 0xdc, 0x86, 0x8b, 0x52, 0x7f,
+  0xdc, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x25, 0x58,
+  0x3a, 0x4e, 0xd6, 0x89, 0x86, 0x24, 0x37, 0xa3,
+  0x4f, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x22, 0x99,
+  0xfc, 0xec, 0x14, 0xee, 0x43, 0x44, 0x69, 0x3f,
+  0x9d, 0x82, 0x9d, 0xc8, 0x68, 0xa7, 0xe7, 0xff,
+  0x39, 0x9c, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x26,
+  0xa9, 0xfc, 0xec, 0x14, 0xee, 0x43, 0x45, 0x77,
+  0x3c, 0x9d, 0xc8, 0x68, 0xaf, 0xa7, 0x04, 0x21,
+  0x2a, 0x5f, 0x29, 0xc5, 0xe4, 0x09, 0xf3, 0x31,
+  0x1e, 0x73, 0xd6, 0x93, 0xa7, 0xfd, 0x96, 0x0f,
+  0x5e, 0xab, 0x94, 0x1d, 0x3f, 0xee, 0xf0, 0xe5,
+  0x1e, 0x7e, 0x6c, 0x74, 0x9d, 0x88, 0xb8, 0x68,
+  0x87, 0xe3, 0x95, 0x3d, 0x9f, 0xfc, 0xe6, 0x73,
+  0xdd, 0x82, 0x9d, 0xc8, 0x68, 0x9e, 0xe7, 0xf3,
+  0xb0, 0x53, 0xb9, 0x0d, 0x17, 0x0c, 0xff, 0xce,
+  0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x27, 0xc2,
+  0xab, 0xb3, 0xa0, 0xed, 0xe7, 0x7a, 0xce, 0xd0,
+  0xed, 0xa5, 0x21, 0x8d, 0x66, 0xc8, 0x75, 0x52,
+  0x6c, 0x77, 0x3f, 0x9d, 0x82, 0x9d, 0xc8, 0x68,
+  0x8a, 0xa7, 0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x14,
+  0xcc, 0xff, 0xe7, 0x33, 0x9e, 0xec, 0x14, 0xee,
+  0x43, 0x44, 0xcf, 0x3f, 0xf9, 0xcc, 0xe7, 0xbb,
+  0x05, 0x3b, 0x90, 0xd1, 0x46, 0xc5, 0x09, 0x8d,
+  0x6c, 0x77, 0xac, 0xee, 0xea, 0x53, 0xff, 0x3b,
+  0x9e, 0xec, 0x14, 0xee, 0x43, 0x44, 0x75, 0x3f,
+  0x7b, 0x3f, 0xb6, 0x50, 0x74, 0xf8, 0x53, 0xb9,
+  0x0d, 0x14, 0xd4, 0xfd, 0xe5, 0x65, 0x18, 0x13,
+  0xa7, 0xff, 0xb2, 0xf6, 0xc7, 0x8f, 0x7e, 0xf6,
+  0xe7, 0x9d, 0x32, 0x80, 0xe9, 0xfe, 0xaf, 0x52,
+  0xa9, 0xe4, 0x70, 0xa2, 0x3f, 0xe5, 0xbb, 0xd3,
+  0x64, 0xed, 0x93, 0x4b, 0xc2, 0xeb, 0xc2, 0xfe,
+  0x7c, 0x29, 0xdc, 0x86, 0x8a, 0xaa, 0x7f, 0xdc,
+  0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x26, 0xd9, 0x3b,
+  0x0f, 0xd9, 0x86, 0x13, 0xf9, 0xd8, 0x29, 0xdc,
+  0x86, 0x8a, 0xfe, 0x7f, 0x3b, 0x05, 0x3b, 0x90,
+  0xd1, 0x63, 0x4f, 0x85, 0x3b, 0x90, 0xd1, 0x6a,
   0xcf, 0xfb, 0x9e, 0xec, 0x14, 0xee, 0x43, 0x45,
-  0x0f, 0x3f, 0x7d, 0xb9, 0x82, 0xb5, 0x3a, 0x7f,
-  0xfe, 0xcd, 0xac, 0xbb, 0xdd, 0x7f, 0xf0, 0x2b,
-  0x55, 0x01, 0x52, 0x76, 0x23, 0xcd, 0x84, 0x3a,
-  0x23, 0x6a, 0x17, 0xcf, 0xe7, 0x60, 0xa7, 0x72,
-  0x1a, 0x2f, 0x38, 0x55, 0xfe, 0xe7, 0xa2, 0x6c,
-  0xa5, 0x92, 0xe7, 0xe9, 0x87, 0xf8, 0x93, 0x30,
-  0xee, 0xc7, 0x7f, 0x8e, 0x75, 0xb2, 0x34, 0xfe,
-  0x76, 0x0a, 0x77, 0x21, 0xa2, 0x96, 0x9f, 0xce,
-  0xc1, 0x4e, 0xe4, 0x34, 0x58, 0x53, 0xf9, 0xd8,
-  0x29, 0xdc, 0x86, 0x8b, 0x2e, 0x79, 0xda, 0xf5,
-  0x5f, 0x37, 0x53, 0xa7, 0x3b, 0x7b, 0x0e, 0x9e,
-  0x47, 0x2d, 0x50, 0xf4, 0xb4, 0x34, 0x9f, 0xfc,
-  0xe6, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68, 0xa3,
-  0x27, 0xf3, 0x95, 0xb2, 0x8a, 0x80, 0xe8, 0x7a,
-  0x77, 0xe2, 0x76, 0xc3, 0xbe, 0x84, 0x6d, 0x4e,
-  0x2e, 0xa5, 0x3f, 0xf3, 0xb9, 0xee, 0xc1, 0x4e,
-  0xe4, 0x34, 0x47, 0x33, 0xff, 0x9c, 0xce, 0x7b,
-  0xb0, 0x53, 0xb9, 0x0d, 0x13, 0x94, 0xfe, 0x76,
-  0x0a, 0x77, 0x21, 0xa2, 0xcc, 0x9f, 0xce, 0xc1,
-  0x4e, 0xe4, 0x34, 0x5b, 0xb3, 0xff, 0x9c, 0xce,
-  0x7b, 0xb0, 0x53, 0xb9, 0x0d, 0x14, 0x84, 0xff,
-  0xce, 0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x29,
-  0x45, 0x09, 0xd9, 0x34, 0x98, 0xc5, 0x2f, 0x9d,
-  0xdc, 0xed, 0xbd, 0x4a, 0x7f, 0xdc, 0xf7, 0x60,
-  0xa7, 0x72, 0x1a, 0x27, 0x69, 0xff, 0xf7, 0xb6,
-  0xd1, 0x8a, 0xdf, 0xdb, 0x7d, 0x7f, 0x88, 0x74,
-  0x9c, 0xc4, 0x4f, 0xf2, 0x34, 0xff, 0xdc, 0xcb,
-  0x62, 0x75, 0x97, 0x7b, 0xce, 0x9f, 0xfb, 0xf9,
-  0x6e, 0xa3, 0x2b, 0xfe, 0xa4, 0xe9, 0xb5, 0x1d,
-  0xb2, 0x21, 0xea, 0x87, 0x0c, 0x47, 0x16, 0xa4,
-  0x2b, 0xe7, 0xc2, 0x9d, 0xc8, 0x68, 0x8b, 0x27,
-  0xfd, 0xcf, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0x5d,
-  0x9f, 0xff, 0xb3, 0x6b, 0x2e, 0xf7, 0x5f, 0xfc,
-  0x0a, 0xd5, 0x40, 0x54, 0x9d, 0x88, 0xd3, 0x61,
-  0x86, 0xa2, 0x34, 0xff, 0xe7, 0x33, 0x9e, 0xec,
-  0x14, 0xee, 0x43, 0x44, 0xc5, 0x3f, 0x9d, 0x82,
-  0x9d, 0xc8, 0x68, 0xaa, 0x67, 0xff, 0x39, 0x9c,
-  0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x27, 0x49, 0xfd,
-  0xee, 0x15, 0x7f, 0x36, 0x3a, 0x7c, 0xd2, 0xb4,
-  0xb5, 0x3a, 0x7e, 0x0e, 0x79, 0xb6, 0x7c, 0xe9,
-  0xef, 0x59, 0x5d, 0xe3, 0xd6, 0xa9, 0x44, 0xff,
-  0xda, 0x56, 0xeb, 0x4b, 0xb4, 0x6b, 0xcc, 0x3a,
-  0x18, 0x88, 0x2b, 0x1c, 0xcf, 0xfb, 0x9e, 0xec,
-  0x14, 0xee, 0x43, 0x44, 0xef, 0x3e, 0xbe, 0x9c,
-  0xcf, 0x15, 0x27, 0x6c, 0x9c, 0xde, 0x46, 0x14,
-  0xc2, 0x3e, 0x46, 0x9f, 0xfc, 0xe6, 0x73, 0xdd,
-  0x82, 0x9d, 0xc8, 0x68, 0xa1, 0x67, 0xff, 0x39,
-  0x9c, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x29, 0x29,
-  0xff, 0xfd, 0x95, 0x76, 0xfc, 0x6a, 0xdc, 0xcb,
-  0xd9, 0x6f, 0xa3, 0x0e, 0x8a, 0x17, 0x00, 0xde,
-  0x70, 0x8a, 0x42, 0x76, 0xc8, 0xfb, 0x40, 0x93,
-  0xa2, 0x96, 0xa2, 0x94, 0xfe, 0x76, 0x0a, 0x77,
-  0x21, 0xa2, 0x24, 0x9f, 0xfc, 0xe6, 0x73, 0xdd,
-  0x82, 0x9d, 0xc8, 0x68, 0x97, 0xa7, 0xc2, 0x9d,
-  0xc8, 0x68, 0xa5, 0xe7, 0xf2, 0xec, 0xdf, 0xe6,
-  0x2d, 0x4e, 0x93, 0xb0, 0xf9, 0xae, 0x61, 0x3f,
-  0x9d, 0x82, 0x9d, 0xc8, 0x68, 0xa7, 0x27, 0xfd,
-  0xe1, 0xea, 0xdb, 0x33, 0xe8, 0x74, 0xff, 0xb2,
-  0xca, 0x38, 0xe0, 0x84, 0x25, 0x4d, 0xe0, 0x9d,
-  0x35, 0x0e, 0xd9, 0x11, 0xba, 0x87, 0x6d, 0xe7,
-  0x93, 0xe1, 0x4e, 0xe4, 0x34, 0x57, 0x93, 0xff,
-  0xf6, 0x6d, 0x65, 0xde, 0xeb, 0xff, 0x81, 0x5a,
-  0xa8, 0x0a, 0x93, 0xb1, 0x11, 0xba, 0x86, 0x13,
-  0xff, 0x3b, 0x9e, 0xec, 0x14, 0xee, 0x43, 0x44,
-  0x8f, 0x3b, 0xc0, 0x53, 0xa7, 0x26, 0x30, 0xa7,
-  0x17, 0x73, 0xe1, 0x4e, 0xe4, 0x34, 0x49, 0x13,
-  0xce, 0xe7, 0xb9, 0x4f, 0x67, 0x0a, 0x67, 0xfe,
-  0x77, 0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x89, 0x2a,
-  0x7c, 0x29, 0xdc, 0x86, 0x8b, 0xc6, 0x7e, 0xd3,
-  0xf4, 0xf5, 0x35, 0x3a, 0x7d, 0x5a, 0xdf, 0x10,
-  0xe9, 0xfe, 0x7b, 0xb0, 0x53, 0xb9, 0x0d, 0x12,
-  0x6c, 0x9d, 0x88, 0xc7, 0xa4, 0xc0, 0x4c, 0x38,
-  0x9a, 0x15, 0x74, 0xa6, 0x83, 0xb7, 0xc2, 0xe3,
-  0x62, 0x7f, 0x43, 0x21, 0xa8, 0x68, 0xb0, 0xae,
-  0xd0, 0xc0, 0xb9, 0xbe, 0x91, 0x89, 0xc2, 0xc6,
-  0xd4, 0x79, 0x44, 0x75, 0xcf, 0x8f, 0x27, 0x68,
-  0xf6, 0xb2, 0xdc, 0xbe, 0x6b, 0x94, 0xac, 0x95,
-  0xf6, 0x6d, 0x33, 0xcf, 0x7e, 0x9c, 0xc4, 0xd5,
-  0xc7, 0x60, 0xd5, 0x35, 0x3c, 0x69, 0x1e, 0x0c,
-  0xc4, 0x50, 0xc5, 0xa7, 0x6a, 0x3a, 0x9c, 0xf0,
-  0x09, 0x61, 0xcd, 0xdc, 0x2c, 0x7f, 0x3c, 0x91,
-  0x5a, 0x49, 0x9d, 0xeb, 0x92, 0x0d, 0x29, 0x5d,
-  0xed, 0xa5, 0x30, 0x06, 0x50, 0x6e, 0xa4, 0x7b,
-  0xdb, 0xe7, 0x40, 0x5b, 0xe7, 0x69, 0xa0,
+  0x05, 0x27, 0x61, 0xfb, 0x30, 0xc2, 0x7f, 0x3b,
+  0x05, 0x3b, 0x90, 0xd1, 0x71, 0x4f, 0xe7, 0x60,
+  0xa7, 0x72, 0x1a, 0x2e, 0x99, 0xff, 0xfc, 0xb6,
+  0xfe, 0x9d, 0xab, 0xc7, 0xdb, 0x35, 0xe6, 0xcd,
+  0x68, 0x74, 0xff, 0x9f, 0x82, 0x3c, 0xfa, 0x30,
+  0x27, 0x4e, 0xff, 0x38, 0x51, 0x4b, 0x76, 0x99,
+  0xff, 0x0a, 0xd3, 0x6e, 0xad, 0xd4, 0x27, 0x4f,
+  0xda, 0xa7, 0xf2, 0xdd, 0x73, 0xa7, 0xe0, 0x73,
+  0x4f, 0xf5, 0xce, 0x9f, 0xff, 0xf6, 0xb5, 0xda,
+  0xd9, 0x4d, 0xff, 0xd6, 0x07, 0x56, 0xbc, 0x28,
+  0x74, 0xf2, 0x77, 0x21, 0xa2, 0x4c, 0x9f, 0xe1,
+  0xca, 0x6f, 0x7e, 0x7d, 0x4e, 0x81, 0x3e, 0x36,
+  0x15, 0xcf, 0xdb, 0x03, 0x54, 0xa8, 0x35, 0x0e,
+  0x9f, 0x65, 0xfc, 0xce, 0x3a, 0x7f, 0xfd, 0xc8,
+  0x2b, 0x6f, 0xe5, 0xf1, 0xc1, 0x08, 0x4a, 0x87,
+  0x9f, 0xc5, 0xc9, 0xa7, 0xff, 0x69, 0xfe, 0xba,
+  0x8d, 0x6c, 0xbf, 0xb9, 0xd3, 0x82, 0x10, 0x95,
+  0x3f, 0x0f, 0x50, 0xcf, 0x54, 0xa7, 0x17, 0x93,
+  0xec, 0x60, 0xe6, 0xac, 0xe9, 0xff, 0x31, 0x52,
+  0xdf, 0xd2, 0xeb, 0x53, 0xa7, 0xfb, 0x38, 0x1b,
+  0xb3, 0x6e, 0x79, 0xd3, 0xff, 0xba, 0x8b, 0x79,
+  0x7f, 0x8d, 0x78, 0x7c, 0x74, 0x62, 0x30, 0x6e,
+  0x7c, 0x13, 0x99, 0xf7, 0xf2, 0xdd, 0x73, 0xa7,
+  0xfc, 0xf5, 0xfd, 0x1b, 0xc7, 0xfa, 0x3c, 0xe8,
+  0xd5, 0x9f, 0x43, 0x44, 0xd3, 0xd7, 0xa3, 0x36,
+  0x3a, 0x7f, 0xbd, 0xaf, 0x78, 0x81, 0x9e, 0xa9,
+  0xd0, 0xd1, 0xf0, 0x6a, 0x11, 0xce, 0x08, 0x42,
+  0x74, 0xff, 0xfb, 0x19, 0x7f, 0xa8, 0x33, 0x6a,
+  0xe3, 0x15, 0x0a, 0x71, 0x79, 0x18, 0x99, 0x5f,
+  0xa1, 0x0f, 0x64, 0x29, 0xfa, 0xcb, 0xb9, 0x3d,
+  0x41, 0xd3, 0xf0, 0xf0, 0xfd, 0x5e, 0x74, 0x6c,
+  0x7b, 0x22, 0x5f, 0x33, 0xdc, 0xdc, 0x5e, 0x1e,
+  0x53, 0x17, 0x97, 0x64, 0x34, 0x35, 0x90, 0xd3,
+  0x0a, 0xf6, 0x88, 0xb9, 0x97, 0xe7, 0x95, 0x87,
+  0x55, 0xe3, 0xc2, 0xdf, 0x08, 0xe9, 0xf6, 0x30,
+  0x73, 0x56, 0x74, 0xff, 0xd9, 0x6f, 0xad, 0x1b,
+  0xed, 0x6e, 0xd5, 0x9d, 0x3f, 0x72, 0x38, 0x21,
+  0x09, 0xd2, 0x72, 0x32, 0x00, 0x84, 0xcf, 0xa7,
+  0x96, 0xff, 0x0d, 0x5a, 0x94, 0xb6, 0x4a, 0x87,
+  0xb3, 0x43, 0x76, 0x8e, 0x5e, 0x98, 0x59, 0x09,
+  0x3b, 0x0e, 0xc1, 0x0b, 0x1a, 0x93, 0xdc, 0xef,
+  0x4a, 0x47, 0x14, 0xfe, 0x76, 0x0a, 0x77, 0x21,
+  0xa2, 0x35, 0x9f, 0x0a, 0x77, 0x21, 0xa2, 0xa5,
+  0x9b, 0x90, 0xd1, 0x0d, 0x49, 0xd8, 0x7a, 0x3c,
+  0x61, 0x3f, 0xf3, 0xb9, 0xee, 0xc1, 0x4e, 0xe4,
+  0x34, 0x47, 0xd3, 0xf9, 0xd8, 0x29, 0xdc, 0x86,
+  0x8b, 0x1e, 0x7e, 0xd5, 0x3f, 0x96, 0xeb, 0x9d,
+  0x3f, 0xdf, 0xe0, 0x57, 0xaf, 0x7e, 0x3a, 0x78,
+  0x0c, 0xf0, 0x9d, 0x3f, 0xff, 0xca, 0x3f, 0xcd,
+  0xb2, 0xd6, 0xf2, 0x5b, 0xd7, 0xaf, 0x52, 0x74,
+  0x79, 0x10, 0xf6, 0x21, 0x9d, 0xdc, 0x86, 0x8b,
+  0x42, 0x7f, 0xdc, 0x16, 0xf4, 0xe1, 0xa3, 0x02,
+  0x74, 0x85, 0x0f, 0x94, 0x49, 0xa7, 0xe6, 0xdb,
+  0xef, 0xf5, 0x01, 0xd3, 0xe5, 0xbe, 0x59, 0x4e,
+  0x9f, 0xfe, 0xcb, 0xd7, 0x1a, 0xb2, 0xb6, 0xcb,
+  0x59, 0x4e, 0x8a, 0x0f, 0xd7, 0xe4, 0xb0, 0xa8,
+  0xc9, 0xc8, 0x53, 0x4f, 0xfd, 0x95, 0xf6, 0x9f,
+  0x78, 0xae, 0x6c, 0x74, 0xfa, 0xf6, 0xef, 0xeb,
+  0x3a, 0x7f, 0xbf, 0xa5, 0x1b, 0x5b, 0x3e, 0xa7,
+  0x4d, 0xfc, 0xc3, 0xe4, 0x42, 0x99, 0xfd, 0x96,
+  0x6b, 0xd6, 0xf3, 0x0e, 0x9f, 0xcf, 0xc1, 0xaf,
+  0xd6, 0x83, 0xa7, 0xb6, 0xcb, 0x71, 0xd3, 0xfd,
+  0x98, 0x1c, 0x44, 0xc0, 0x9d, 0x18, 0x8b, 0xba,
+  0x4d, 0x38, 0xca, 0xa4, 0x33, 0xd9, 0x6e, 0xb9,
+  0xd3, 0xfb, 0x5f, 0xbf, 0xa3, 0xf2, 0xa7, 0x49,
+  0xcd, 0xc5, 0xca, 0xb5, 0x31, 0xda, 0x17, 0xd9,
+  0x08, 0x8b, 0x43, 0xbb, 0xe4, 0xd5, 0x85, 0x45,
+  0xe1, 0xcd, 0xa8, 0x79, 0xbc, 0x82, 0x7e, 0x6f,
+  0xf6, 0xdf, 0x56, 0x8e, 0x9e, 0xcb, 0x75, 0xce,
+  0x96, 0xa9, 0x87, 0xa5, 0xf3, 0x29, 0xf0, 0xa7,
+  0x72, 0x1a, 0x2d, 0x69, 0xff, 0x73, 0xdd, 0x82,
+  0x9d, 0xc8, 0x68, 0xa0, 0xe4, 0xe6, 0xe2, 0x28,
+  0xb0, 0xb1, 0x86, 0x13, 0xff, 0x9c, 0xce, 0x7b,
+  0xb0, 0x53, 0xb9, 0x0d, 0x14, 0x5c, 0xfe, 0x76,
+  0x0a, 0x77, 0x21, 0xa2, 0xea, 0x87, 0xb2, 0x14,
+  0xd2, 0x11, 0x9e, 0x26, 0x62, 0x65, 0xa7, 0x39,
+  0x81, 0x1d, 0x4d, 0x4e, 0x6e, 0xa5, 0x3e, 0x14,
+  0xee, 0x43, 0x44, 0x43, 0x3a, 0xd9, 0xb1, 0xd2,
+  0x76, 0x1e, 0x65, 0x26, 0x13, 0xf9, 0xd8, 0x29,
+  0xdc, 0x86, 0x88, 0xda, 0x7f, 0x3b, 0x05, 0x3b,
+  0x90, 0xd1, 0x4d, 0xcf, 0xe7, 0x60, 0xa7, 0x72,
+  0x1a, 0x2a, 0x09, 0xfc, 0xec, 0x14, 0xee, 0x43,
+  0x45, 0x4d, 0x3e, 0x14, 0xee, 0x43, 0x45, 0x61,
+  0x3e, 0xf0, 0x76, 0xd0, 0x4e, 0x9f, 0xe7, 0xbb,
+  0x05, 0x3b, 0x90, 0xd1, 0x1f, 0xce, 0xc5, 0xa0,
+  0xe9, 0x3b, 0x11, 0x6a, 0x86, 0x1c, 0x53, 0xf4,
+  0x19, 0xff, 0xce, 0x67, 0x3d, 0xd8, 0x29, 0xdc,
+  0x86, 0x89, 0xbe, 0x7f, 0xe6, 0x73, 0xdd, 0x82,
+  0x9d, 0xc8, 0x68, 0x9f, 0xa7, 0xe6, 0xeb, 0xaa,
+  0xb5, 0x4d, 0x4c, 0xa4, 0xe9, 0xff, 0xe5, 0x55,
+  0x55, 0x55, 0x55, 0x5a, 0x6a, 0x74, 0xf8, 0x7d,
+  0x47, 0x30, 0xa9, 0x82, 0x12, 0xa3, 0x0d, 0xe8,
+  0x49, 0xe5, 0xa1, 0x4e, 0x34, 0x10, 0xa8, 0xc7,
+  0xac, 0x29, 0xa7, 0xe1, 0xe4, 0xb7, 0x84, 0xe9,
+  0xea, 0x19, 0xe7, 0x9d, 0x3e, 0xaf, 0xf4, 0xe7,
+  0x9d, 0x3f, 0xac, 0xac, 0x70, 0x00, 0xa7, 0x48,
+  0x54, 0xff, 0x70, 0x8f, 0xc5, 0x13, 0x81, 0x5c,
+  0x3a, 0x7f, 0xed, 0x96, 0xfd, 0x5c, 0xb5, 0xbc,
+  0xc3, 0xa7, 0x5f, 0xcd, 0x1d, 0x0a, 0x7c, 0x35,
+  0x44, 0x85, 0x4e, 0x77, 0xc4, 0xe3, 0x0a, 0x7f,
+  0x99, 0x5d, 0xf2, 0x7b, 0x9a, 0xde, 0xc3, 0xa6,
+  0xef, 0x9d, 0x02, 0x6e, 0x58, 0x49, 0x38, 0x21,
+  0x09, 0xd3, 0xd4, 0x7f, 0xca, 0x53, 0x8b, 0xc9,
+  0xea, 0x6f, 0xe4, 0x3a, 0x15, 0x11, 0xf6, 0x3c,
+  0xd0, 0xc6, 0x7f, 0xea, 0x34, 0x06, 0x7f, 0x46,
+  0x96, 0xfc, 0x74, 0xf2, 0xde, 0xa8, 0x68, 0x83,
+  0xa7, 0xee, 0xb2, 0xea, 0xf4, 0x79, 0xd0, 0x28,
+  0xa5, 0xba, 0x3b, 0x62, 0xd9, 0x87, 0x63, 0xa6,
+  0x08, 0x4e, 0x87, 0x9a, 0xc0, 0x8b, 0x4f, 0x55,
+  0x7c, 0xd8, 0xa7, 0x1a, 0x19, 0xf5, 0x77, 0xec,
+  0x0a, 0x9d, 0x1e, 0x3d, 0xed, 0xe6, 0x73, 0x82,
+  0x10, 0x95, 0x05, 0x38, 0xbc, 0x9e, 0xf0, 0x7c,
+  0xd1, 0x50, 0x86, 0xf3, 0xc3, 0x31, 0xe4, 0xde,
+  0x2d, 0x0d, 0xcf, 0xbe, 0x4e, 0xff, 0xaa, 0x74,
+  0xf6, 0xdd, 0xf0, 0x1d, 0x3f, 0xf2, 0xfc, 0x1f,
+  0x5a, 0x5a, 0x5f, 0x80, 0xe8, 0xf2, 0x20, 0xc0,
+  0x39, 0x52, 0x29, 0xf9, 0xa5, 0xc1, 0xb7, 0x8e,
+  0x9f, 0xaf, 0x8d, 0x7d, 0x58, 0x78, 0x80, 0xa7,
+  0xdd, 0xfd, 0xac, 0xa6, 0x88, 0x09, 0xc6, 0xea,
+  0x7c, 0xa0, 0xf5, 0x35, 0x3a, 0x7f, 0x0b, 0x55,
+  0xf7, 0xef, 0xe3, 0xa7, 0xa9, 0x00, 0xa9, 0x53,
+  0x04, 0x25, 0x42, 0x9b, 0x70, 0x90, 0xcf, 0xdc,
+  0x2f, 0x7f, 0xfc, 0x53, 0x8d, 0x04, 0x2a, 0x79,
+  0x38, 0x61, 0xe6, 0x6f, 0xa2, 0x5c, 0xa3, 0x48,
+  0x45, 0xcf, 0xb4, 0xbe, 0x9d, 0xbc, 0xd1, 0x03,
+  0xcf, 0xfa, 0xda, 0x50, 0xbb, 0x96, 0xeb, 0xb1,
+  0xd3, 0xb8, 0x68, 0x3a, 0x60, 0x84, 0xe9, 0xfc,
+  0x3e, 0xc6, 0xdb, 0xde, 0xe4, 0x36, 0x21, 0x1b,
+  0x8d, 0x91, 0x7e, 0x2e, 0x73, 0xff, 0x7f, 0x35,
+  0xdb, 0x9f, 0xbf, 0xa9, 0x53, 0xa1, 0x4f, 0xab,
+  0x08, 0xe7, 0xff, 0x63, 0x19, 0xcf, 0xc1, 0x4e,
+  0xe4, 0x34, 0x43, 0x11, 0x63, 0xf1, 0xf9, 0x04,
+  0xfd, 0x82, 0x9d, 0xc8, 0x68, 0x82, 0xa7, 0xaf,
+  0x55, 0x01, 0x53, 0xb8, 0x68, 0x2a, 0x7b, 0x4f,
+  0xf6, 0xb2, 0xa7, 0xf7, 0xa8, 0xcb, 0xd5, 0x40,
+  0x54, 0x15, 0x3f, 0x62, 0x2d, 0x95, 0x85, 0x4c,
+  0x10, 0x95, 0x3f, 0x7d, 0x7f, 0x47, 0x84, 0xa8,
+  0xc4, 0xc2, 0x90, 0x85, 0x83, 0x76, 0x24, 0x01,
+  0x9f, 0xc2, 0x82, 0x55, 0xbc, 0x5a, 0x6f, 0x09,
+  0x4e, 0x3f, 0x29, 0x73, 0xd3, 0xd7, 0xb4, 0x76,
+  0x33, 0xfe, 0x57, 0xf7, 0xf2, 0xa2, 0xb5, 0x3a,
+  0x7f, 0xaf, 0x65, 0x6d, 0xb2, 0x81, 0x4e, 0x9f,
+  0xe5, 0xa5, 0xfa, 0x8a, 0x98, 0xc3, 0xa1, 0x4f,
+  0xd2, 0xc7, 0x53, 0xff, 0xf3, 0x5d, 0xcf, 0xeb,
+  0x6e, 0xca, 0x34, 0xbe, 0x9d, 0xbc, 0xd1, 0x7d,
+  0xcf, 0xbd, 0x7f, 0xe3, 0xce, 0x9f, 0xf7, 0xfc,
+  0xfb, 0xdb, 0x07, 0xd5, 0x3a, 0x7f, 0x5c, 0x1b,
+  0xfe, 0xfb, 0x61, 0xe2, 0x01, 0x9d, 0xc2, 0xf3,
+  0xc4, 0x03, 0x18, 0x7d, 0x3a, 0x21, 0x4d, 0xcf,
+  0x3c, 0x40, 0x33, 0xdd, 0xfa, 0x5e, 0x78, 0x80,
+  0x67, 0xf7, 0x92, 0xd8, 0x00, 0x29, 0xe2, 0x01,
+  0x9d, 0xef, 0xec, 0x78, 0x80, 0x63, 0x64, 0x5c,
+  0xb0, 0x8a, 0xc5, 0xed, 0x8f, 0xa7, 0x0a, 0xdc,
+  0xf1, 0x00, 0xc1, 0xe2, 0x01, 0x99, 0x58, 0x78,
+  0x80, 0x63, 0x63, 0x73, 0xe1, 0x79, 0xef, 0x33,
+  0x65, 0x3c, 0x40, 0x33, 0xaf, 0xc8, 0x78, 0x80,
+  0x67, 0xfd, 0xfe, 0x7b, 0xad, 0xe4, 0xe1, 0x3c,
+  0x40, 0x33, 0x76, 0xc7, 0x88, 0x06, 0x7f, 0x7f,
+  0x83, 0x5a, 0xa8, 0x0f, 0x10, 0x0c, 0xfb, 0xda,
+  0xfb, 0xe0, 0x3c, 0x40, 0x33, 0x7a, 0xa7, 0x88,
+  0x06, 0x04, 0xf6, 0x6e, 0x6d, 0x3e, 0xbf, 0xd6,
+  0x97, 0x9a, 0x20, 0x19, 0x80, 0xa7, 0x88, 0x05,
+  0xc6, 0xd6, 0x7d, 0xe5, 0x67, 0x6c, 0x78, 0x80,
+  0x67, 0xb4, 0xef, 0xa1, 0xe2, 0x01, 0x9c, 0xa2,
+  0x87, 0x88, 0x06, 0x7f, 0xd9, 0x4d, 0x76, 0x5c,
+  0xf8, 0x2a, 0x78, 0x80, 0x67, 0xda, 0x73, 0xde,
+  0xa7, 0x88, 0x06, 0x31, 0x10, 0x16, 0x4c, 0x98,
+  0x40, 0x78, 0x80, 0x61, 0xea, 0xa3, 0xf6, 0x23,
+  0xc8, 0x4c, 0x79, 0x5a, 0xc6, 0x40, 0x34, 0xa9,
+  0x75, 0xe1, 0x4d, 0xa1, 0x14, 0xfb, 0x2f, 0x5e,
+  0xa4, 0xf1, 0x00, 0xcf, 0xed, 0x95, 0x1a, 0x15,
+  0xb9, 0xe2, 0x01, 0xd8, 0xda, 0x4e, 0x15, 0x09,
+  0xe2, 0x01, 0x84, 0x3f, 0x71, 0x50, 0x9e, 0xf7,
+  0xdf, 0x53, 0xc4, 0x03, 0x3f, 0x73, 0x4f, 0xca,
+  0x5e, 0x78, 0x80, 0x63, 0x11, 0x14, 0x02, 0x0d,
+  0x0b, 0xe7, 0xfa, 0xcb, 0x57, 0x57, 0x41, 0x01,
+  0xe2, 0x01, 0x97, 0x8f, 0x10, 0x0c, 0xdd, 0x46,
+  0xc7, 0xc7, 0x64, 0x69, 0x84, 0x07, 0x88, 0x06,
+  0x7d, 0xd7, 0xaf, 0xa9, 0x3c, 0x40, 0x33, 0xf7,
+  0xbf, 0xa3, 0xf2, 0xa7, 0x88, 0x06, 0x15, 0x12,
+  0x5f, 0x22, 0xb9, 0xac, 0x6c, 0xc8, 0x0e, 0xc8,
+  0x6d, 0xb4, 0x80, 0x2c, 0x16, 0x22, 0xe2, 0xf0,
+  0x13, 0xd6, 0x56, 0xc5, 0xe3, 0xc0, 0xd4, 0x84,
+  0x9e, 0xf8, 0x60, 0xce, 0xee, 0x43, 0x44, 0x02,
+  0xe4, 0x5e, 0x4f, 0x6b, 0xd5, 0x6d, 0x98, 0x74,
+  0xc0, 0x52, 0xa5, 0xac, 0xa9, 0xd6, 0x5a, 0x0e,
+  0x98, 0x21, 0x2a, 0x3c, 0x7b, 0x3a, 0xb1, 0x56,
+  0x84, 0x82, 0x39, 0x39, 0x9e, 0xa9, 0x4e, 0x3c,
+  0x19, 0xeb, 0xd5, 0xbf, 0x43, 0xa2, 0x86, 0x57,
+  0x4b, 0xc9, 0xd2, 0x92, 0xe3, 0xe3, 0x80, 0x43,
+  0x1b, 0x79, 0x6c, 0xfc, 0x2d, 0x3d, 0x46, 0x83,
+  0xa7, 0xfc, 0xfa, 0xee, 0xfe, 0x31, 0x47, 0x59,
+  0xd3, 0xff, 0x0d, 0xbb, 0x1e, 0xa2, 0x0d, 0xec,
+  0x3a, 0x7e, 0xde, 0x11, 0xf6, 0x58, 0xa9, 0xe6,
+  0xad, 0xcd, 0x1d, 0x3e, 0xc6, 0x9e, 0xb4, 0x9d,
+  0x3d, 0x9f, 0x57, 0x95, 0x02, 0x7d, 0x7f, 0x23,
+  0x6f, 0x28, 0x85, 0x4d, 0xef, 0x0b, 0x7c, 0x83,
+  0x64, 0x3e, 0x84, 0xcc, 0xf7, 0xbf, 0x7a, 0x9d,
+  0x3b, 0x46, 0xee, 0xa7, 0x4f, 0xfc, 0x06, 0x62,
+  0x5b, 0xdb, 0x5b, 0x4d, 0x67, 0x4f, 0xfd, 0x7a,
+  0xe6, 0xcb, 0x4d, 0x72, 0x9b, 0x9d, 0x3f, 0x9f,
+  0x95, 0xdf, 0x5b, 0xe1, 0xd0, 0xa8, 0xe4, 0xf1,
+  0x17, 0x24, 0x68, 0x8d, 0x3e, 0xe6, 0xdb, 0x6c,
+  0xa7, 0x4d, 0x5a, 0x9d, 0x38, 0x21, 0x09, 0xd3,
+  0x03, 0x8a, 0x71, 0x79, 0x02, 0x7a, 0xd5, 0x32,
+  0x9d, 0xc0, 0xc2, 0xa1, 0xe8, 0xbb, 0x64, 0x20,
+  0x35, 0x08, 0x67, 0xf5, 0xff, 0x94, 0x83, 0x7b,
+  0xce, 0x9f, 0xef, 0xe3, 0x6c, 0x70, 0x42, 0x12,
+  0xa7, 0x33, 0xae, 0x74, 0x58, 0xf5, 0x5b, 0x1d,
+  0x42, 0xa3, 0x9f, 0xc7, 0x1d, 0x08, 0xb9, 0xad,
+  0xc7, 0x4c, 0xd5, 0x4e, 0x9f, 0x9d, 0x8d, 0xbd,
+  0xfd, 0xb0, 0xd6, 0x6f, 0x15, 0x9e, 0xdb, 0x2d,
+  0xc7, 0x4f, 0xfc, 0xb9, 0xf7, 0xdb, 0x3f, 0xf5,
+  0x09, 0xd2, 0xf0, 0xa2, 0xaf, 0xe9, 0x17, 0x21,
+  0x8a, 0x1b, 0x67, 0x77, 0xc7, 0xa5, 0xb4, 0x7f,
+  0x3a, 0xcb, 0xd2, 0x15, 0xfe, 0x21, 0x1a, 0x5a,
+  0xbd, 0xa3, 0xe6, 0x02, 0x6f, 0xe3, 0x06, 0xbc,
+  0x7b, 0xcd, 0xa3, 0x0a, 0x9f, 0xec, 0x1f, 0xad,
+  0xdf, 0x96, 0x3a, 0x7e, 0xf8, 0x33, 0x6e, 0x79,
+  0xd3, 0xed, 0xed, 0x3d, 0x75, 0x65, 0x42, 0xa2,
+  0x47, 0x0d, 0xb7, 0x96, 0xcf, 0xfe, 0x1d, 0x7f,
+  0xd3, 0xb7, 0xe5, 0x7c, 0xbf, 0x3a, 0x5b, 0xcd,
+  0x10, 0x2c, 0xae, 0x6a, 0x05, 0x25, 0xeb, 0x9b,
+  0xc0, 0x8f, 0xcf, 0xfb, 0xda, 0x96, 0xf6, 0xf7,
+  0x00, 0x0a, 0x54, 0xff, 0xeb, 0xd7, 0xa9, 0xdc,
+  0xc5, 0xcf, 0xdf, 0x50, 0xe8, 0x54, 0x49, 0xf9,
+  0x12, 0x75, 0x1f, 0x79, 0xd0, 0xa9, 0xc1, 0x32,
+  0x11, 0x36, 0x85, 0xd6, 0x84, 0x53, 0xf9, 0xed,
+  0x67, 0xfa, 0xd8, 0x74, 0xff, 0xe1, 0x4f, 0xe3,
+  0x6f, 0xe2, 0x8a, 0xd4, 0xe9, 0xfd, 0xcd, 0x5b,
+  0x19, 0x95, 0x3a, 0x30, 0xfe, 0x5b, 0x23, 0xcf,
+  0xde, 0xd7, 0x7c, 0xc6, 0x1d, 0x3e, 0xcd, 0xbc,
+  0x35, 0x3a, 0x7f, 0xfa, 0xb7, 0xa5, 0x3d, 0x6d,
+  0xcd, 0xf9, 0x6f, 0x30, 0xe9, 0x2d, 0x07, 0xfa,
+  0x12, 0x78, 0xf2, 0x3d, 0xac, 0x47, 0x78, 0x55,
+  0xce, 0xdb, 0x84, 0xe9, 0xf0, 0x3b, 0xf8, 0xde,
+  0x74, 0x29, 0xe2, 0x68, 0x37, 0x3c, 0xac, 0xa5,
+  0xa3, 0xa1, 0x55, 0x2f, 0xbe, 0x3a, 0x1a, 0xbc,
+  0xdc, 0x8a, 0x78, 0x1d, 0x4d, 0x4e, 0x98, 0x21,
+  0x3a, 0x2a, 0x6e, 0x02, 0x45, 0x3f, 0x57, 0xd6,
+  0xec, 0xb1, 0x4e, 0x34, 0x33, 0x82, 0x10, 0x95,
+  0x3c, 0xfb, 0xe2, 0x14, 0xe2, 0xf2, 0x7d, 0x9b,
+  0x78, 0x15, 0x3a, 0x5c, 0x27, 0xaf, 0xf2, 0xf9,
+  0xfb, 0xf4, 0xd5, 0xac, 0xb9, 0xd3, 0xea, 0x35,
+  0x7e, 0xca, 0x4e, 0x9f, 0x7a, 0xab, 0x43, 0x0f,
+  0x97, 0xec, 0xf9, 0x78, 0x41, 0xa1, 0xf2, 0xfd,
+  0x9b, 0x9e, 0x7c, 0xbf, 0x67, 0xb4, 0x7e, 0x54,
+  0xf9, 0x7e, 0xc6, 0xc7, 0xa3, 0xf2, 0x29, 0xf2,
+  0xe5, 0x73, 0xe7, 0xcb, 0xf6, 0x0f, 0x97, 0xec,
+  0xdd, 0x73, 0xe5, 0xfa, 0xc2, 0xde, 0x4f, 0xf9,
+  0xfd, 0x68, 0x93, 0x3d, 0x9a, 0x9e, 0x01, 0xf2,
+  0xfd, 0x83, 0xe5, 0xfb, 0x30, 0x14, 0xf9, 0x7e,
+  0xcf, 0xf6, 0x03, 0x87, 0x1b, 0x66, 0xc7, 0xcb,
+  0xf6, 0x7e, 0xcb, 0x7a, 0xba, 0x50, 0x7c, 0xbf,
+  0x60, 0x08, 0xa3, 0xf9, 0x15, 0x51, 0x67, 0x86,
+  0x85, 0xb9, 0xf2, 0xfd, 0x83, 0xe5, 0xfb, 0x86,
+  0xba, 0x60, 0x84, 0xf9, 0x7e, 0xc3, 0xd5, 0x88,
+  0xec, 0x6b, 0x90, 0x84, 0xa6, 0x13, 0xa2, 0x52,
+  0xc3, 0x1a, 0xc2, 0xea, 0xeb, 0xc1, 0x26, 0x9e,
+  0xc7, 0xae, 0xb2, 0xe5, 0xfa, 0xe4, 0x47, 0xcf,
+  0xfb, 0x13, 0x6c, 0x10, 0xf5, 0x9a, 0x3a, 0x67,
+  0xd0, 0x54, 0x50, 0x89, 0x5a, 0x50, 0x7e, 0x7b,
+  0x02, 0xb9, 0x29, 0xd3, 0x8c, 0x53, 0xff, 0xf5,
+  0x2f, 0x15, 0x6d, 0xcd, 0x2e, 0xd6, 0x56, 0x73,
+  0x47, 0x42, 0xae, 0xb9, 0xe1, 0x37, 0x4e, 0x61,
+  0xe8, 0x59, 0x3f, 0xed, 0x6b, 0x4f, 0xd6, 0xd6,
+  0xd1, 0x0e, 0x9f, 0xbf, 0xda, 0xed, 0xcf, 0x3a,
+  0x70, 0x42, 0x12, 0xa7, 0x6f, 0x50, 0x14, 0xe2,
+  0xf2, 0x7f, 0xdf, 0xe7, 0xef, 0x1c, 0x6d, 0xc2,
+  0x74, 0xff, 0x7f, 0x81, 0xb9, 0xea, 0x0a, 0x4e,
+  0x8d, 0x93, 0x31, 0x62, 0x08, 0x12, 0xbe, 0x59,
+  0x73, 0xf9, 0xff, 0x7f, 0xfe, 0xd1, 0xbb, 0xae,
+  0xa2, 0xdc, 0xe9, 0xc1, 0x08, 0x4b, 0x10, 0x84,
+  0xf8, 0x53, 0xb9, 0x0b, 0x10, 0x83, 0x8d, 0x4c,
+  0xe0, 0x84, 0x25, 0x88, 0x3e, 0x0b, 0x10, 0x7b,
+  0x8d, 0x4c, 0xca, 0xcc, 0x44, 0x82, 0x34, 0xcf,
+  0xae, 0xb7, 0x56, 0x1d, 0x3d, 0xff, 0x2e, 0xb3,
+  0xa7, 0x6f, 0x50, 0x1d, 0x14, 0x1e, 0x03, 0x08,
+  0xe7, 0xc8, 0xb6, 0x56, 0x15, 0x3e, 0xff, 0x7f,
+  0xf8, 0x54, 0xd8, 0x85, 0x4c, 0x10, 0x95, 0x18,
+  0x7e, 0xb5, 0x25, 0xb9, 0x30, 0x45, 0x27, 0xf7,
+  0xf7, 0xa8, 0x2d, 0x8d, 0xe5, 0x38, 0xdd, 0xc2,
+  0xa7, 0x01, 0xe6, 0x6e, 0x86, 0x9c, 0xff, 0xeb,
+  0x28, 0x2b, 0x99, 0xb7, 0x7f, 0xb5, 0x9d, 0x3f,
+  0xab, 0xbd, 0x95, 0x0f, 0x52, 0x74, 0x2a, 0xba,
+  0xdc, 0x4c, 0xf4, 0x60, 0x23, 0x1d, 0x67, 0x1a,
+  0x55, 0x2a, 0x70, 0x42, 0x12, 0xa7, 0xcf, 0x07,
+  0x7f, 0x62, 0x9c, 0x5e, 0x4f, 0xff, 0x7e, 0x9d,
+  0xd4, 0x81, 0x7e, 0x9d, 0x47, 0xf8, 0xe9, 0xff,
+  0xec, 0x57, 0x6d, 0xf5, 0xd1, 0x33, 0x5f, 0x84,
+  0xe9, 0xe6, 0xfb, 0x01, 0xb1, 0xd0, 0xf3, 0xf7,
+  0xe5, 0x09, 0xff, 0xcf, 0xc1, 0x03, 0x3d, 0x5d,
+  0xf5, 0x5c, 0x3a, 0x7b, 0xdb, 0x63, 0x0e, 0x85,
+  0x4e, 0x39, 0xe6, 0xfd, 0x0c, 0xaf, 0x90, 0xe8,
+  0x95, 0x3f, 0x6a, 0xeb, 0xef, 0xd2, 0xf3, 0xa7,
+  0xfd, 0xc3, 0xa9, 0xeb, 0x67, 0x52, 0x03, 0xa7,
+  0xfd, 0x5a, 0xa8, 0xdd, 0x5d, 0xb7, 0x8e, 0x9f,
+  0xf7, 0xf9, 0xab, 0x70, 0x8f, 0xb6, 0x3a, 0x31,
+  0x1d, 0xe8, 0x67, 0xe4, 0x06, 0x1f, 0x4f, 0x3f,
+  0x7e, 0x34, 0x74, 0xf8, 0x76, 0xcc, 0xf9, 0xd3,
+  0xff, 0x6a, 0xfd, 0x96, 0x56, 0xd5, 0xb2, 0xd2,
+  0x74, 0x71, 0xf8, 0x54, 0x9a, 0x7f, 0xfb, 0x2f,
+  0x5c, 0x6a, 0xca, 0xdb, 0x2d, 0x65, 0x3a, 0x7f,
+  0x5d, 0xba, 0xb5, 0xf6, 0xe9, 0x46, 0x87, 0x46,
+  0xc8, 0xb4, 0xf9, 0x0d, 0xd4, 0x27, 0xff, 0xbd,
+  0x5c, 0xda, 0xf5, 0xf6, 0xbb, 0x77, 0xfc, 0x74,
+  0xff, 0xfe, 0xfd, 0xf2, 0xde, 0x5b, 0xf8, 0x0a,
+  0xf7, 0x04, 0x21, 0x2a, 0x7b, 0x6c, 0xcd, 0x65,
+  0x4e, 0x7f, 0xf4, 0x34, 0x43, 0x33, 0x82, 0x10,
+  0x95, 0x3b, 0x3e, 0x85, 0x38, 0xbc, 0x9f, 0xf6,
+  0x51, 0x9b, 0x73, 0xfe, 0xb4, 0x1d, 0x00, 0x3e,
+  0x8f, 0x94, 0xcf, 0xe7, 0xff, 0x2f, 0x7d, 0x28,
+  0x3a, 0x15, 0x38, 0x9a, 0x18, 0x69, 0x23, 0x18,
+  0x57, 0x71, 0x14, 0xf7, 0xaf, 0xe5, 0x3a, 0x7f,
+  0x69, 0x82, 0x00, 0x7b, 0xe7, 0x4f, 0xff, 0x95,
+  0xfe, 0xda, 0xdb, 0xeb, 0x82, 0x9d, 0xc8, 0x68,
+  0x83, 0x22, 0xc8, 0x94, 0xb9, 0x9c, 0xfe, 0xd4,
+  0xca, 0xea, 0x60, 0xa9, 0xd0, 0xf4, 0xc3, 0xbd,
+  0x0b, 0x5b, 0x91, 0xcf, 0xff, 0x2f, 0xe8, 0xdc,
+  0xd7, 0xbf, 0x9b, 0x67, 0xf5, 0x9d, 0x39, 0x45,
+  0xa3, 0xa1, 0x57, 0x65, 0x36, 0x3b, 0xc8, 0xd2,
+  0x10, 0xc7, 0xd1, 0xee, 0x74, 0x6b, 0xba, 0x1b,
+  0x6a, 0x2b, 0x4f, 0xef, 0xfd, 0x5e, 0xc5, 0xf1,
+  0xd3, 0xfa, 0xfe, 0x6d, 0xeb, 0xbd, 0x4a, 0x93,
+  0x0e, 0x9f, 0xb3, 0xfa, 0xc5, 0x5d, 0xe3, 0xc5,
+  0xde, 0x6b, 0x1e, 0x45, 0xf5, 0x5d, 0xe7, 0x87,
+  0x4a, 0x5e, 0x74, 0xfe, 0xfb, 0xff, 0x8c, 0x54,
+  0x3a, 0x73, 0x36, 0xc3, 0xa1, 0x4f, 0xc3, 0x08,
+  0xf8, 0xc6, 0x75, 0xfd, 0x41, 0xd3, 0xfe, 0xd2,
+  0xf5, 0xde, 0x20, 0x67, 0xaa, 0x74, 0xff, 0xcb,
+  0xfe, 0xb2, 0x81, 0xc3, 0x5a, 0x95, 0x1b, 0x22,
+  0x11, 0x88, 0x53, 0xeb, 0x7b, 0xd4, 0xd4, 0xe8,
+  0x2a, 0x7e, 0xae, 0xf5, 0x15, 0x61, 0x50, 0x54,
+  0x15, 0x05, 0x41, 0x50, 0xf3, 0xdf, 0xf0, 0x50,
+  0x0b, 0x74, 0x0a, 0xd4, 0x0a, 0x6f, 0x0a, 0x9a,
+  0xd8, 0x54, 0xfd, 0xdd, 0x76, 0x95, 0x85, 0x6e,
+  0x2d, 0x64, 0xdd, 0x95, 0x05, 0x41, 0x50, 0xf2,
+  0xd3, 0xc1, 0x50, 0x54, 0x15, 0x05, 0x41, 0x50,
+  0x54, 0x15, 0x14, 0x1b, 0xcd, 0x82, 0xbc, 0x14,
+  0x00, 0xaa, 0x85, 0x36, 0x0a, 0x82, 0xa0, 0xa8,
+  0x79, 0x69, 0x50, 0xa8, 0x2a, 0x0a, 0x82, 0xa0,
+  0xa8, 0x79, 0xa8, 0x00, 0x55, 0xc2, 0x9b, 0xc2,
+  0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa2, 0x83, 0x51,
+  0xac, 0x28, 0x42, 0xac, 0x15, 0x2d, 0x65, 0x41,
+  0x50, 0x54, 0x15, 0x05, 0x46, 0xc6, 0xa2, 0x90,
+  0xa0, 0x05, 0x68, 0x15, 0x05, 0x41, 0x50, 0x54,
+  0xfa, 0xca, 0x0a, 0xe1, 0x50, 0x54, 0x3c, 0xf3,
+  0x90, 0x2a, 0xc1, 0x5c, 0x14, 0x02, 0x69, 0x21,
+  0x50, 0x54, 0x15, 0x05, 0x41, 0x50, 0xf3, 0x51,
+  0x48, 0x57, 0x82, 0x9b, 0x05, 0x41, 0x50, 0x54,
+  0x15, 0x05, 0x43, 0xcd, 0x46, 0xc1, 0x56, 0x0a,
+  0xf8, 0x54, 0xac, 0x54, 0x15, 0x05, 0x49, 0xe5,
+  0x41, 0x54, 0x96, 0x10, 0x54, 0x15, 0x05, 0x41,
+  0x51, 0x41, 0xf3, 0x3c, 0x2b, 0x58, 0xd2, 0x0d,
+  0x34, 0x14, 0x00, 0xab, 0x85, 0x4b, 0x0a, 0x82,
+  0xa0, 0xa9, 0x3c, 0xa8, 0x2a, 0x92, 0xc2, 0x0a,
+  0x82, 0xa1, 0x4f, 0x49, 0xe1, 0x5e, 0x1a, 0x11,
+  0xa6, 0x05, 0x41, 0x50, 0x54, 0x15, 0x05, 0x41,
+  0x50, 0xa6, 0xca, 0x90, 0xa1, 0x0a, 0x60, 0x57,
+  0xc2, 0xa0, 0xa8, 0x2a, 0x0a, 0x81, 0x2f, 0xaa,
+  0x15, 0x70, 0xa8, 0x2a, 0x0a, 0x82, 0xa1, 0x85,
+  0xf7, 0xc2, 0xae, 0x15, 0x26, 0x15, 0x05, 0x41,
+  0x50, 0x02, 0xd3, 0x40, 0xa8, 0x2a, 0x0a, 0x82,
+  0xa0, 0xa8, 0x53, 0x50, 0xd0, 0x55, 0x82, 0xb4,
+  0x0a, 0x85, 0x5f, 0xad, 0xa1, 0xc9, 0xe7, 0xbb,
+  0x14, 0xe2, 0xe2, 0x36, 0xd2, 0x91, 0xe6, 0x6d,
+  0x59, 0xeb, 0x47, 0x43, 0x08, 0xc6, 0x23, 0xd8,
+  0xdf, 0x99, 0x80, 0x79, 0xf7, 0x6a, 0xb3, 0x5d,
+  0x87, 0x47, 0x96, 0xcc, 0xa1, 0x4a, 0xd4, 0x2d,
+  0xde, 0x48, 0xde, 0x93, 0x3e, 0x7f, 0xd7, 0x2a,
+  0x53, 0x93, 0x57, 0x9d, 0xe5, 0x61, 0x53, 0xde,
+  0x4e, 0x13, 0xa7, 0x7b, 0x6c, 0x3a, 0x72, 0xef,
+  0x75, 0x28, 0x8f, 0x13, 0x9b, 0x0d, 0xdc, 0x7e,
+  0x7f, 0x5b, 0xc1, 0xd8, 0x56, 0x83, 0xa2, 0x94,
+  0x42, 0x34, 0xa1, 0x30, 0x14, 0xe9, 0xf8, 0x7b,
+  0xfb, 0xd4, 0x07, 0x4d, 0xc2, 0x74, 0xbc, 0x72,
+  0x16, 0x92, 0x43, 0xa4, 0xc3, 0xa7, 0x66, 0xa3,
+  0xbc, 0x89, 0x31, 0x15, 0xb2, 0x0f, 0x0f, 0x6f,
+  0x0f, 0x9f, 0xff, 0x68, 0xbb, 0xb8, 0x47, 0x80,
+  0xae, 0x08, 0x42, 0x74, 0x3d, 0x9b, 0x1d, 0xb4,
+  0x24, 0xd0, 0xb3, 0xd0, 0xa1, 0x68, 0x93, 0xa9,
+  0x53, 0xff, 0x85, 0xc5, 0xd7, 0xa7, 0xf2, 0xfe,
+  0xfd, 0xfd, 0x30, 0xe9, 0xf9, 0xff, 0xf3, 0xed,
+  0x87, 0x4f, 0xa8, 0xf0, 0xab, 0xce, 0x81, 0x3d,
+  0x4f, 0x96, 0xcf, 0xfa, 0xca, 0x20, 0xfe, 0x07,
+  0x80, 0x74, 0xec, 0xc6, 0x8e, 0x96, 0x58, 0xf5,
+  0xc0, 0x79, 0x3f, 0x57, 0x1b, 0x7d, 0x69, 0x3a,
+  0x79, 0x7f, 0x74, 0x3a, 0x4b, 0x88, 0xee, 0xfb,
+  0xc5, 0xc9, 0xf5, 0x0b, 0xe7, 0xb4, 0xe1, 0x79,
+  0xd3, 0xcb, 0xa3, 0x77, 0x52, 0xa7, 0xcf, 0x70,
+  0x42, 0x13, 0xa3, 0xe7, 0x9f, 0xa1, 0x3c, 0x6c,
+  0x89, 0x3c, 0x70, 0x86, 0x2a, 0x6e, 0x04, 0x6e,
+  0x9a, 0x43, 0x5e, 0x7e, 0x1d, 0x01, 0x9f, 0x43,
+  0xa7, 0xfa, 0x8f, 0xe3, 0xed, 0x80, 0xa9, 0xd3,
+  0xdb, 0x6c, 0xad, 0x8e, 0x9f, 0xff, 0x2d, 0x95,
+  0x88, 0xb7, 0xc1, 0x4e, 0xe4, 0x34, 0x5f, 0x13,
+  0xf8, 0x3d, 0x7a, 0xae, 0x50, 0x74, 0xff, 0xfd,
+  0x97, 0xde, 0xf5, 0x6d, 0xef, 0x80, 0x7c, 0xac,
+  0xc2, 0xa6, 0xbe, 0x1d, 0x3e, 0x1f, 0x51, 0xcc,
+  0x34, 0xc2, 0x73, 0xd7, 0xd1, 0x78, 0xd3, 0x09,
+  0xcc, 0x05, 0x35, 0x02, 0x73, 0xfb, 0xfd, 0xae,
+  0xea, 0x20, 0x35, 0x02, 0x73, 0xfa, 0xb9, 0x6f,
+  0x57, 0x4a, 0x0d, 0x30, 0x9c, 0xd9, 0xb1, 0xa6,
+  0x13, 0x98, 0x21, 0x3c, 0xc2, 0x71, 0x89, 0xa6,
+  0x52, 0x69, 0xe2, 0xe6, 0x11, 0x55, 0x01, 0xb2,
+  0x10, 0x48, 0xe5, 0x72, 0xcc, 0x26, 0xe3, 0xe7,
+  0x97, 0xa9, 0x4f, 0xd8, 0x31, 0xe4, 0x45, 0x55,
+  0x42, 0x5e, 0x52, 0x9c, 0x2a, 0xb9, 0xbd, 0x8e,
+  0x50, 0x96, 0xcb, 0x77, 0x95, 0x6d, 0x3e, 0xdb,
+  0x07, 0xda, 0xce, 0x9f, 0x7f, 0x37, 0xe3, 0x47,
+  0x4f, 0xf5, 0xb9, 0x96, 0xf2, 0xd2, 0xf3, 0xa7,
+  0xed, 0xff, 0x7e, 0xa7, 0x50, 0x74, 0x78, 0xfb,
+  0x00, 0x73, 0x1f, 0x45, 0xbd, 0xe1, 0x2b, 0x0a,
+  0xba, 0x43, 0x92, 0xf1, 0xfc, 0xa5, 0xd0, 0xe0,
+  0x9f, 0xfc, 0xcb, 0xd7, 0xdf, 0xa5, 0xf7, 0xf5,
+  0x7c, 0x74, 0xff, 0xfe, 0xfe, 0x53, 0x95, 0xef,
+  0xdb, 0xcb, 0x7b, 0x69, 0xcc, 0x3a, 0x7e, 0xfe,
+  0x8c, 0xf5, 0x94, 0xe9, 0xff, 0xf7, 0x7e, 0xfd,
+  0xd6, 0xfa, 0xde, 0xa1, 0xcb, 0x1d, 0x38, 0x6b,
+  0x53, 0xc4, 0x07, 0x3f, 0xfd, 0xbc, 0x56, 0xcb,
+  0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x01, 0xb8, 0xd4,
+  0x40, 0x11, 0xcb, 0x77, 0xb8, 0xc4, 0xcd, 0xbd,
+  0x18, 0x9c, 0xff, 0xfe, 0xe7, 0xe5, 0x7c, 0x23,
+  0xe6, 0x6f, 0xbd, 0xb0, 0x37, 0x3a, 0x7f, 0xff,
+  0xb9, 0xf9, 0xf6, 0x9f, 0x94, 0xbf, 0x7a, 0x81,
+  0xc1, 0x08, 0x4a, 0x8b, 0x23, 0x2f, 0xec, 0x33,
+  0xf9, 0x70, 0x53, 0xb9, 0x0d, 0x10, 0x4c, 0xff,
+  0x2d, 0xf0, 0x53, 0xb9, 0x0d, 0x17, 0xcc, 0xfb,
+  0xcd, 0xbf, 0x95, 0xd8, 0xfe, 0x90, 0xea, 0x7f,
+  0xd4, 0x75, 0x3a, 0x99, 0x7f, 0xf3, 0x63, 0xa7,
+  0x04, 0x21, 0x2a, 0x7e, 0xbd, 0xb1, 0x38, 0x4a,
+  0x71, 0x79, 0x14, 0x22, 0x67, 0xec, 0x13, 0xff,
+  0x50, 0xc5, 0xa6, 0xbf, 0xca, 0x37, 0xbc, 0xe9,
+  0xff, 0xed, 0xf4, 0xff, 0x72, 0x5b, 0xc0, 0x02,
+  0x8b, 0xce, 0x9c, 0x10, 0x84, 0xa9, 0xfd, 0xbc,
+  0x0b, 0xfc, 0xa6, 0xe5, 0x38, 0xbc, 0x9f, 0xff,
+  0x9b, 0xbd, 0xc9, 0x6f, 0x6d, 0xb6, 0x07, 0x75,
+  0xeb, 0x94, 0x1d, 0x2e, 0xb2, 0x2a, 0xf4, 0x44,
+  0x87, 0xaa, 0x8b, 0xf4, 0x36, 0x84, 0x91, 0x89,
+  0x37, 0x8c, 0x6e, 0x7f, 0xd9, 0x75, 0x1a, 0xd9,
+  0x7f, 0x73, 0xc4, 0x11, 0x3f, 0x97, 0x05, 0x3b,
+  0x90, 0xd1, 0x04, 0x38, 0xf2, 0x67, 0xee, 0xb0,
+  0x8f, 0x82, 0x74, 0xfd, 0xab, 0xd8, 0x3d, 0xf7,
+  0x9d, 0x1f, 0x3d, 0xdd, 0x0a, 0xe0, 0x08, 0xcb,
+  0xfc, 0x2a, 0x27, 0xf9, 0x7f, 0x7d, 0xf9, 0x6e,
+  0xa4, 0xe9, 0xff, 0xee, 0x0d, 0xf2, 0xcb, 0xeb,
+  0xff, 0x2d, 0xe3, 0xa1, 0xe8, 0x88, 0xf9, 0xd4,
+  0xfe, 0xbe, 0xf6, 0x54, 0x3d, 0x49, 0xd3, 0xde,
+  0x6b, 0xc1, 0x3a, 0x7f, 0xfd, 0xa5, 0x1f, 0x5c,
+  0xb3, 0x96, 0xf9, 0x6d, 0x04, 0xe9, 0xf6, 0x5e,
+  0xbb, 0xeb, 0xb1, 0xfc, 0xef, 0x23, 0x9f, 0x92,
+  0xde, 0xd4, 0xf6, 0xb3, 0xa7, 0xe6, 0x2e, 0xae,
+  0xd9, 0x41, 0xd3, 0xff, 0xff, 0xde, 0xbf, 0x33,
+  0xbe, 0x07, 0xfa, 0xba, 0x32, 0xde, 0x5b, 0xdb,
+  0x4e, 0x61, 0xd1, 0xb2, 0x38, 0xfc, 0x65, 0xc6,
+  0x33, 0x87, 0x7d, 0x4e, 0x9f, 0xf7, 0x7d, 0x30,
+  0x53, 0xb9, 0x0d, 0x10, 0x8c, 0x29, 0xf1, 0x68,
+  0x3b, 0x3f, 0xf9, 0x72, 0x9d, 0xf7, 0xf7, 0xf4,
+  0x7e, 0x54, 0xe9, 0xff, 0xee, 0xea, 0x37, 0xe5,
+  0xb9, 0x8e, 0x08, 0x42, 0x74, 0xb3, 0x64, 0x4f,
+  0x34, 0x9b, 0x38, 0x21, 0x09, 0x53, 0xfd, 0x80,
+  0xe1, 0xc6, 0xd9, 0xb1, 0x4e, 0x2f, 0x26, 0x08,
+  0x4a, 0x9c, 0x10, 0x84, 0xa9, 0xfb, 0xa8, 0xda,
+  0xcb, 0x52, 0x9c, 0x5e, 0x47, 0xd1, 0x6c, 0x14,
+  0x7d, 0x43, 0x29, 0xf2, 0x7b, 0x6d, 0xec, 0x29,
+  0xc6, 0xce, 0x70, 0x42, 0x12, 0xa7, 0x55, 0x44,
+  0xa7, 0x17, 0x92, 0x07, 0x8f, 0xfe, 0xea, 0xd3,
+  0xf6, 0xdf, 0x57, 0xf2, 0x1d, 0x3f, 0xb7, 0x8e,
+  0xde, 0x6c, 0xbb, 0x1d, 0x3f, 0xaf, 0x6c, 0x6d,
+  0x97, 0xa9, 0xd0, 0x28, 0x98, 0xb1, 0x67, 0xce,
+  0x21, 0x51, 0xdf, 0x90, 0xc0, 0x9d, 0x4e, 0xab,
+  0x9b, 0xa9, 0xd3, 0xff, 0xb3, 0x57, 0xdf, 0x06,
+  0x22, 0xd9, 0x58, 0x74, 0xfc, 0x9e, 0xad, 0xbc,
+  0xd1, 0x53, 0xfb, 0xf9, 0x4b, 0xeb, 0xed, 0x67,
+  0x4f, 0x77, 0x0e, 0xb3, 0xa3, 0x71, 0xeb, 0xd0,
+  0x6d, 0x3c, 0xbc, 0xc6, 0xc5, 0x4e, 0x08, 0x42,
+  0x54, 0xff, 0xf6, 0xf5, 0x06, 0x67, 0xef, 0x6f,
+  0x2f, 0xe8, 0x29, 0xc5, 0xe4, 0xb1, 0x11, 0x3c,
+  0xc3, 0xe8, 0x54, 0xf9, 0x1e, 0x57, 0x4a, 0x57,
+  0xa1, 0x0b, 0x68, 0x61, 0xcf, 0xff, 0x99, 0x88,
+  0xbf, 0xeb, 0xd7, 0x6d, 0x38, 0x5e, 0x74, 0xf9,
+  0x6f, 0x56, 0xd8, 0x74, 0x29, 0xfe, 0x5d, 0x52,
+  0x7f, 0xfb, 0xcd, 0xb3, 0xfb, 0x7f, 0x83, 0x9f,
+  0xed, 0x67, 0x4f, 0xff, 0xf6, 0xd6, 0xf0, 0x71,
+  0xbf, 0xcc, 0xeb, 0xd7, 0x47, 0xe5, 0x37, 0x3a,
+  0x31, 0x18, 0x1c, 0xa7, 0x0a, 0xd8, 0xef, 0xd0,
+  0x9a, 0xf8, 0xe5, 0xf6, 0x87, 0xa6, 0x4b, 0x28,
+  0xf4, 0x6d, 0x4d, 0x42, 0xc0, 0x48, 0xd9, 0x0a,
+  0xfb, 0x46, 0x4e, 0x08, 0x49, 0x7e, 0x18, 0x15,
+  0x95, 0x3b, 0x79, 0x41, 0x5a, 0x43, 0x44, 0x30,
+  0xe1, 0x9c, 0xd9, 0x7e, 0x74, 0xff, 0xf6, 0x7d,
+  0xd7, 0xd7, 0xea, 0x6b, 0x6c, 0x07, 0x1d, 0x2a,
+  0x5e, 0x7d, 0xfb, 0x0e, 0xcf, 0xd6, 0x6b, 0xd6,
+  0xf3, 0x0e, 0x9f, 0xf7, 0xd6, 0xf6, 0xe0, 0x75,
+  0x35, 0x3a, 0x73, 0x5a, 0x09, 0xd3, 0xfe, 0xef,
+  0x0e, 0x52, 0xe0, 0x84, 0x27, 0x47, 0x1e, 0xdd,
+  0x47, 0x67, 0xff, 0xbe, 0xaf, 0xdd, 0xbe, 0xfe,
+  0xfe, 0x8f, 0xca, 0x9d, 0x18, 0x99, 0xf2, 0x17,
+  0xda, 0x13, 0x20, 0x21, 0x9f, 0xcb, 0xf7, 0xff,
+  0x30, 0x07, 0x4f, 0xe7, 0xe0, 0xd7, 0xeb, 0x41,
+  0xd3, 0xff, 0xca, 0xd9, 0x45, 0xdb, 0xef, 0xfc,
+  0xa3, 0xc2, 0x7b, 0xbd, 0xe7, 0xff, 0xb2, 0xeb,
+  0xf4, 0xcb, 0xdb, 0xc2, 0x04, 0x3a, 0x7d, 0xd5,
+  0xcf, 0xdc, 0xe9, 0xd7, 0xed, 0x59, 0xd3, 0xfa,
+  0xf6, 0xf3, 0x81, 0xde, 0x3a, 0x28, 0x4c, 0x8f,
+  0x65, 0xff, 0xa6, 0x5c, 0x9b, 0x41, 0xf9, 0xfd,
+  0xa0, 0x16, 0xde, 0xe7, 0x9d, 0x3f, 0xff, 0x7f,
+  0x2b, 0xa6, 0xec, 0xb7, 0x7f, 0x1a, 0x7a, 0xd2,
+  0x74, 0xff, 0xb2, 0xba, 0x60, 0xa7, 0x72, 0x1a,
+  0x20, 0x69, 0xf6, 0x5e, 0xdc, 0xfd, 0xc8, 0xa5,
+  0xfa, 0xf4, 0xff, 0xff, 0xfd, 0x97, 0xb7, 0x7f,
+  0x5e, 0xea, 0x8f, 0x75, 0xdb, 0x66, 0xdb, 0xb1,
+  0x9d, 0xfa, 0x5e, 0x78, 0x82, 0xe7, 0xfd, 0xdd,
+  0xad, 0x3b, 0x6d, 0xda, 0xc2, 0x78, 0x82, 0xe7,
+  0xfe, 0xb7, 0xad, 0xe5, 0xfd, 0xf7, 0x6b, 0x09,
+  0xe2, 0x0b, 0x9f, 0xcb, 0xef, 0xdf, 0x76, 0xb0,
+  0x9e, 0x20, 0xb9, 0xf9, 0x99, 0xb6, 0xed, 0x61,
+  0x3c, 0x41, 0x73, 0xff, 0xfd, 0xdf, 0xff, 0x99,
+  0xba, 0xa9, 0x6f, 0x0f, 0xb5, 0xd1, 0x81, 0x3c,
+  0x41, 0x73, 0x53, 0xbb, 0x64, 0xe8, 0x51, 0x40,
+  0x55, 0xb9, 0x13, 0xe7, 0xf1, 0x65, 0x52, 0xdf,
+  0x94, 0x7d, 0x3d, 0xc2, 0x0e, 0x3a, 0x7f, 0xeb,
+  0x7a, 0xde, 0x5f, 0xdf, 0x76, 0xb0, 0x9e, 0x20,
+  0xb9, 0xfe, 0x6a, 0xa9, 0xea, 0x37, 0x6b, 0x09,
+  0xe2, 0x0b, 0x9f, 0x5e, 0xaa, 0xcd, 0xc8, 0x8a,
+  0x2d, 0xea, 0xd3, 0xff, 0xb7, 0x25, 0xbc, 0x8b,
+  0x7a, 0xee, 0xd6, 0x13, 0xc4, 0x17, 0x3f, 0xff,
+  0xf7, 0xff, 0xe6, 0x6e, 0xd3, 0x37, 0x55, 0x2d,
+  0xe1, 0xf6, 0xba, 0x30, 0x27, 0x88, 0x2e, 0x31,
+  0x32, 0x6a, 0x50, 0xf9, 0x72, 0x7f, 0xad, 0xe1,
+  0xf6, 0xba, 0x30, 0x27, 0x88, 0x2e, 0x7f, 0xfb,
+  0xba, 0x97, 0xd6, 0xde, 0xdb, 0x65, 0x15, 0x2a,
+  0x7f, 0xd8, 0xf7, 0xe9, 0x51, 0xfd, 0x1a, 0x87,
+  0x88, 0x2e, 0x11, 0x1d, 0x02, 0x91, 0x55, 0x09,
+  0xff, 0x27, 0x86, 0xfc, 0x0a, 0xee, 0x09, 0xe2,
+  0x0b, 0x9f, 0xad, 0xeb, 0x5b, 0xc0, 0x34, 0x01,
+  0x73, 0xec, 0x06, 0xed, 0x61, 0x3c, 0x41, 0x73,
+  0x65, 0xd0, 0xfc, 0xec, 0x77, 0x14, 0xa3, 0xae,
+  0xb0, 0xbf, 0x9f, 0x99, 0x9b, 0x6e, 0xd6, 0x13,
+  0xc4, 0x17, 0x3f, 0xe4, 0xb7, 0x87, 0xda, 0xe8,
+  0xc0, 0x9e, 0x20, 0xb9, 0xb3, 0x77, 0x22, 0x32,
+  0xa7, 0xf3, 0xfb, 0x4f, 0x33, 0xbf, 0x4b, 0xcf,
+  0x10, 0x5c, 0xff, 0xb3, 0xcd, 0xb3, 0xf9, 0xb7,
+  0x3c, 0xf1, 0x05, 0xb0, 0xf0, 0xa3, 0x65, 0xdc,
+  0x70, 0x16, 0x7e, 0x3e, 0x7a, 0xc6, 0x31, 0x78,
+  0xc6, 0x74, 0x85, 0xa8, 0x5c, 0x67, 0xc0, 0xa8,
+  0x00, 0xa6, 0x88, 0x2d, 0xc8, 0x80, 0x9f, 0xf6,
+  0x3e, 0xdc, 0xf6, 0xf6, 0xfd, 0x28, 0x3a, 0x7f,
+  0x0f, 0xf3, 0x6b, 0x68, 0x13, 0xa7, 0xd4, 0xdf,
+  0x84, 0x07, 0x4f, 0xd9, 0x47, 0x59, 0x75, 0x67,
+  0x47, 0x91, 0x17, 0xc6, 0x9f, 0x27, 0x9d, 0xc3,
+  0x41, 0xd3, 0x01, 0x4e, 0x9e, 0xf2, 0xb3, 0x0e,
+  0x83, 0xa7, 0xee, 0xd7, 0x75, 0x10, 0x1d, 0x1b,
+  0x1b, 0x7f, 0x85, 0x4f, 0xff, 0xe5, 0xf6, 0xdf,
+  0x5d, 0x12, 0xf8, 0x9b, 0x2a, 0x6f, 0x61, 0xd3,
+  0x01, 0x4e, 0x99, 0x75, 0x9d, 0x3f, 0xd9, 0x7a,
+  0xab, 0x37, 0xe3, 0x47, 0x4f, 0xea, 0xe5, 0xbd,
+  0x5d, 0x28, 0x3a, 0x60, 0x84, 0xa9, 0xfe, 0xfe,
+  0x36, 0xe7, 0xd7, 0xdb, 0x1d, 0x08, 0x9f, 0xbf,
+  0x86, 0xc4, 0x55, 0x8a, 0xf6, 0x22, 0x03, 0x13,
+  0x76, 0x2b, 0xf1, 0x7a, 0x9d, 0x04, 0xd7, 0x78,
+  0xb4, 0xe0, 0x84, 0x25, 0x49, 0x85, 0x38, 0xbc,
+  0x9f, 0x73, 0x5d, 0xc2, 0x53, 0x91, 0xb3, 0xbe,
+  0x17, 0x53, 0xfa, 0x9b, 0xae, 0x5b, 0x28, 0x3a,
+  0x15, 0xb2, 0x07, 0xc8, 0xda, 0x35, 0xa0, 0xd2,
+  0x63, 0xe8, 0xd5, 0x45, 0x3a, 0xd0, 0xd8, 0xea,
+  0x48, 0xf7, 0xd1, 0xab, 0x0d, 0x1d, 0x25, 0x7f,
+  0xb6, 0x4b, 0x9e, 0xc4, 0x5b, 0x9d, 0x3d, 0x8c,
+  0xcb, 0x9d, 0x3d, 0xd4, 0x6f, 0x79, 0xd0, 0xa7,
+  0xc7, 0x48, 0xfb, 0x79, 0x04, 0xfd, 0xfd, 0x36,
+  0x67, 0x3c, 0xe9, 0xff, 0xea, 0x5f, 0xf5, 0xdc,
+  0xcf, 0xae, 0xbb, 0xfa, 0x83, 0xa7, 0xf5, 0x6e,
+  0xdb, 0x3f, 0x9b, 0x1d, 0x0a, 0x8b, 0xaf, 0x17,
+  0xf2, 0xb4, 0xee, 0xdd, 0xbc, 0xe9, 0xff, 0xef,
+  0xbf, 0x76, 0x6d, 0xea, 0xd3, 0x7d, 0x3a, 0xa7,
+  0x46, 0xe3, 0xf4, 0xc1, 0xf9, 0xfa, 0x86, 0x9e,
+  0xdc, 0x1a, 0x0e, 0x99, 0xf4, 0x1d, 0x3e, 0xb6,
+  0x79, 0xf5, 0x3a, 0x7f, 0xfa, 0xcb, 0xbd, 0xd7,
+  0xff, 0x02, 0xb5, 0x50, 0x15, 0x3f, 0x81, 0x82,
+  0x9d, 0xc8, 0x78, 0x81, 0x21, 0xe8, 0xb3, 0xd8,
+  0x9c, 0x54, 0x66, 0x6f, 0x79, 0xd3, 0xd7, 0xa3,
+  0xbe, 0x74, 0xf5, 0x35, 0xeb, 0x9d, 0x14, 0x1e,
+  0xee, 0x0c, 0xd8, 0x8a, 0x7f, 0x7f, 0x83, 0x5a,
+  0xa8, 0x0e, 0x9c, 0x10, 0x84, 0xf8, 0x7d, 0x4e,
+  0xef, 0xec, 0x5c, 0x3e, 0x9c, 0x6a, 0x63, 0x64,
+  0x4a, 0x01, 0x6e, 0x7f, 0xfd, 0x9f, 0xf6, 0xb7,
+  0x56, 0xf6, 0xd3, 0x9e, 0xf5, 0x3a, 0x28, 0x3f,
+  0xcd, 0x64, 0x91, 0xaa, 0x95, 0x77, 0xbc, 0xd3,
+  0x21, 0x95, 0xe8, 0x46, 0xf4, 0x67, 0xf3, 0xef,
+  0x5d, 0x6f, 0x52, 0xa7, 0x91, 0x6f, 0x52, 0xa6,
+  0x08, 0x4a, 0x87, 0x9e, 0xee, 0x13, 0x84, 0x82,
+  0x6c, 0x09, 0x4e, 0x35, 0xd3, 0xff, 0xec, 0xba,
+  0xa6, 0x67, 0xef, 0x6f, 0x2f, 0xe8, 0x3a, 0x00,
+  0x7f, 0x01, 0x25, 0x9f, 0xff, 0xca, 0xdb, 0xdf,
+  0x06, 0xeb, 0xd7, 0x12, 0xdd, 0xfb, 0xd4, 0xe9,
+  0xfc, 0xd5, 0x2f, 0xb6, 0x8a, 0x27, 0x4e, 0x7f,
+  0x09, 0xd3, 0xe7, 0xe5, 0xf3, 0x62, 0xa5, 0xe6,
+  0x8f, 0x06, 0xe3, 0x53, 0x01, 0x4e, 0x98, 0x0a,
+  0x74, 0xfd, 0xfd, 0x1f, 0x9f, 0x77, 0x8d, 0x50,
+  0x05, 0x67, 0xfe, 0xbd, 0xb1, 0x9b, 0xd4, 0x19,
+  0x4d, 0xce, 0x9f, 0xd4, 0xa7, 0x87, 0x7a, 0xec,
+  0x74, 0xf0, 0x19, 0xcf, 0xa9, 0xfd, 0xdd, 0x1a,
+  0x76, 0xa6, 0x52, 0x74, 0x29, 0xec, 0x71, 0xcc,
+  0xe0, 0x84, 0x25, 0x4f, 0xb3, 0x5f, 0xf4, 0xa9,
+  0x4e, 0x2f, 0x27, 0xd8, 0xe0, 0x84, 0x27, 0x42,
+  0x9f, 0x05, 0xce, 0x67, 0x83, 0xdf, 0x79, 0xd3,
+  0x25, 0x8e, 0x9c, 0x10, 0x84, 0xa9, 0xfb, 0xdd,
+  0xae, 0xde, 0xb9, 0x4e, 0x2f, 0x27, 0xd8, 0x0c,
+  0xc6, 0x8e, 0x95, 0x77, 0x22, 0x54, 0x4c, 0x7e,
+  0x7d, 0x3d, 0xef, 0xe8, 0xfd, 0x91, 0xdb, 0x90,
+  0xb6, 0x85, 0x5c, 0x52, 0x79, 0x16, 0x32, 0x6b,
+  0x76, 0x15, 0x3b, 0x46, 0x31, 0x58, 0x4e, 0x5e,
+  0x30, 0xe9, 0xf9, 0x58, 0x23, 0xd7, 0x3a, 0x7f,
+  0xfb, 0xcc, 0xa5, 0xf5, 0xdd, 0x9f, 0xfe, 0x78,
+  0x07, 0x45, 0x8f, 0xf6, 0xe5, 0x52, 0x73, 0x74,
+  0x84, 0x1c, 0x4a, 0xca, 0xa6, 0xa2, 0x31, 0x67,
+  0xca, 0x4d, 0xda, 0x54, 0x16, 0x56, 0xda, 0x7a,
+  0xe3, 0x71, 0x48, 0xec, 0xa9, 0x95, 0x4f, 0xe8,
+  0x4e, 0xb5, 0x3c, 0x44, 0x33, 0xa4, 0x8c, 0x94,
+  0x17, 0x69, 0xed, 0x2e, 0xa7, 0x69, 0x82, 0x57,
+  0xdf, 0xe7, 0x57, 0xeb, 0x59, 0x14, 0x5e, 0xb3,
+  0x9f, 0xd2, 0x33, 0x56, 0xd0, 0xec, 0x0c, 0x28,
+  0xb5, 0x25, 0x89, 0x6f, 0x9d, 0xb5, 0x6f, 0x8c,
+  0x06, 0x1d, 0x08, 0x5f, 0x07, 0xe2, 0x0f, 0x56,
+  0x7f, 0x3b, 0x05, 0x3b, 0x90, 0xd1, 0x71, 0xcf,
+  0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x2e, 0xb9, 0xff,
+  0x9d, 0xcf, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0x51,
+  0x85, 0x84, 0x4a, 0x2b, 0xca, 0x36, 0x3b, 0xd6,
+  0x76, 0x87, 0x7e, 0x87, 0x86, 0xad, 0x03, 0xb1,
+  0x0c, 0x85, 0x53, 0x8b, 0x9d, 0xb7, 0x9d, 0xcf,
+  0xfe, 0x73, 0x39, 0xee, 0xc1, 0x4e, 0xe4, 0x34,
+  0x4b, 0x53, 0xe1, 0x4e, 0xe4, 0x34, 0x46, 0xf3,
+  0xfe, 0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x2f,
+  0xc9, 0xd8, 0x7e, 0xcc, 0x30, 0x9f, 0xce, 0xc1,
+  0x4e, 0xe4, 0x34, 0x55, 0x73, 0xfd, 0xaf, 0x3f,
+  0x94, 0xdf, 0x98, 0x74, 0xdb, 0x78, 0xe9, 0xfb,
+  0x05, 0x3b, 0x90, 0xd1, 0x20, 0x46, 0xe3, 0xcc,
+  0x70, 0xbc, 0xfa, 0xbd, 0xfe, 0xa4, 0xe8, 0x79,
+  0xe5, 0xd2, 0x49, 0x1a, 0xd1, 0xe9, 0xd0, 0xd1,
+  0x9f, 0xfb, 0xf9, 0x43, 0xb5, 0x17, 0xff, 0xcb,
+  0x9d, 0x0e, 0x3f, 0x01, 0x29, 0x9f, 0xce, 0xc1,
+  0x4e, 0xe4, 0x34, 0x59, 0x13, 0xf9, 0xd8, 0x29,
+  0xdc, 0x86, 0x8b, 0x5e, 0x7f, 0x3b, 0x05, 0x3b,
+  0x90, 0xd1, 0x72, 0x4f, 0x85, 0x3b, 0x90, 0xd1,
+  0x76, 0x4f, 0xfb, 0x9e, 0xec, 0x14, 0xee, 0x43,
+  0x45, 0x1d, 0x27, 0x61, 0xfb, 0x30, 0xc2, 0x7c,
+  0x29, 0xdc, 0x86, 0x8a, 0x56, 0x7f, 0xff, 0xfa,
+  0xcb, 0x42, 0xdb, 0xcd, 0xbb, 0x6b, 0x79, 0xc9,
+  0x6f, 0x35, 0x65, 0xa3, 0x0e, 0x9f, 0x39, 0x9c,
+  0xf7, 0x62, 0x2c, 0x9a, 0x30, 0x8a, 0x17, 0x3b,
+  0xdf, 0x0c, 0x8a, 0x49, 0xfd, 0x1c, 0xfb, 0x08,
+  0x40, 0x77, 0x53, 0xbb, 0xc2, 0xc5, 0xb4, 0x36,
+  0x67, 0xf9, 0xee, 0xc1, 0x4e, 0xe4, 0x34, 0x47,
+  0x13, 0xfd, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x2b,
+  0x59, 0x3b, 0x91, 0x05, 0x74, 0x19, 0xff, 0xce,
+  0x67, 0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x89, 0x6e,
+  0x6c, 0xa4, 0xe9, 0xfd, 0xb6, 0x31, 0x8b, 0xea,
+  0x9d, 0x14, 0x9e, 0x4f, 0x85, 0xa7, 0x5b, 0x67,
+  0x9d, 0x39, 0xec, 0x43, 0xa0, 0xd1, 0x0d, 0xcf,
+  0xfb, 0x9e, 0xec, 0x14, 0xee, 0x43, 0x44, 0xc1,
+  0x38, 0x74, 0x01, 0x53, 0xfb, 0xf9, 0x7b, 0xa8,
+  0xd4, 0xe9, 0x39, 0x53, 0x05, 0xa0, 0x8f, 0x61,
+  0xd4, 0x1b, 0x60, 0xbd, 0xd1, 0xb7, 0x8e, 0x4e,
+  0x66, 0x82, 0x54, 0xff, 0xb9, 0xee, 0xc1, 0x4e,
+  0xe4, 0x34, 0x4c, 0x72, 0x77, 0x8f, 0x89, 0x83,
+  0x93, 0xf2, 0xd7, 0x75, 0xf2, 0xc7, 0x4f, 0xff,
+  0xff, 0x3e, 0xb6, 0xcd, 0x03, 0x5b, 0x62, 0x65,
+  0x77, 0x65, 0x2f, 0xaf, 0xbf, 0xe3, 0xa7, 0x93,
+  0xb9, 0x0d, 0x15, 0x8c, 0xff, 0xb5, 0x32, 0xff,
+  0xcd, 0x17, 0xf7, 0x3a, 0x35, 0xa6, 0x37, 0x49,
+  0x70, 0xc2, 0x06, 0xe5, 0x73, 0xff, 0x97, 0xf7,
+  0xd7, 0xa2, 0xff, 0x11, 0x44, 0xe9, 0xff, 0x66,
+  0xd6, 0xca, 0xd2, 0xf5, 0xb1, 0xd3, 0xff, 0xff,
+  0x7f, 0x4a, 0x31, 0x37, 0x7f, 0x46, 0xfd, 0xd9,
+  0x4b, 0xf3, 0x4f, 0x82, 0xa7, 0x4f, 0xed, 0x55,
+  0x43, 0x4f, 0x6e, 0x0d, 0x07, 0x4e, 0xb7, 0x9d,
+  0x89, 0xc5, 0xa2, 0x2d, 0x92, 0x6e, 0x7f, 0xa8,
+  0xfd, 0x36, 0x8d, 0x1d, 0x3e, 0xef, 0xd1, 0xa5,
+  0x4e, 0x8f, 0x9e, 0x0d, 0x46, 0x27, 0x94, 0x7b,
+  0xe7, 0x4f, 0x56, 0xaa, 0x03, 0xa2, 0xc7, 0x80,
+  0x11, 0xf9, 0xf2, 0xbc, 0x1a, 0x3c, 0xe9, 0xcb,
+  0xf7, 0x9d, 0x0d, 0x1e, 0x1d, 0xca, 0x27, 0xe5,
+  0x66, 0x7f, 0xda, 0xce, 0x95, 0x4e, 0x8f, 0x1b,
+  0xee, 0x2e, 0x98, 0x0a, 0x54, 0xc1, 0x09, 0x51,
+  0xe3, 0x56, 0x11, 0x59, 0xfd, 0xcf, 0xfe, 0x5e,
+  0xde, 0x29, 0xc6, 0x86, 0x7b, 0x6e, 0xa6, 0xa7,
+  0x4e, 0x5f, 0xb4, 0x74, 0xdf, 0x53, 0xa1, 0xa3,
+  0x62, 0x23, 0x93, 0xc2, 0x0c, 0x6f, 0x3a, 0x76,
+  0xf1, 0xd6, 0x74, 0x2a, 0x2d, 0xf1, 0x53, 0xc4,
+  0x36, 0x23, 0x9a, 0xd7, 0x3a, 0x70, 0x42, 0x12,
+  0xa7, 0xfe, 0xc4, 0xd9, 0x68, 0xdf, 0x96, 0xea,
+  0x4a, 0x71, 0x79, 0x3d, 0xe1, 0x6f, 0xd8, 0xe9,
+  0x09, 0xd3, 0xe6, 0x7a, 0xe0, 0xe3, 0xa2, 0x83,
+  0xdb, 0xd5, 0x92, 0xe8, 0x1f, 0x3f, 0x93, 0xd5,
+  0xfe, 0x36, 0xe3, 0xa6, 0xcb, 0x9d, 0x14, 0x9e,
+  0x45, 0x8c, 0xe7, 0xff, 0xaf, 0xea, 0xdb, 0x36,
+  0xfe, 0x36, 0xfe, 0x54, 0xe9, 0x39, 0x57, 0x27,
+  0x36, 0x62, 0xc6, 0x51, 0x61, 0x63, 0x65, 0xa1,
+  0xf3, 0xc7, 0x7f, 0x32, 0xac, 0x2c, 0x2e, 0xfb,
+  0xbc, 0x8e, 0x7c, 0x29, 0xdc, 0x86, 0x8a, 0xde,
+  0x7f, 0xdc, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x27,
+  0x09, 0x3b, 0x0f, 0xd9, 0x86, 0x13, 0xe1, 0x4e,
+  0xe4, 0x34, 0x5a, 0x33, 0xd8, 0xd7, 0xb5, 0x9d,
+  0x27, 0x61, 0xea, 0x58, 0xc2, 0x79, 0x3b, 0x90,
+  0xd1, 0x6d, 0x4f, 0xd6, 0x56, 0x2f, 0xb6, 0x3a,
+  0x67, 0x60, 0x9e, 0xc5, 0xca, 0xe7, 0xf3, 0xb0,
+  0x53, 0xb9, 0x0d, 0x17, 0x2c, 0xfe, 0x76, 0x0a,
+  0x77, 0x21, 0xa2, 0xed, 0x85, 0x66, 0xae, 0x50,
+  0x50, 0xf8, 0xe8, 0x36, 0x86, 0x7e, 0xb9, 0x59,
+  0xde, 0x9d, 0x3b, 0xd5, 0xc6, 0x41, 0x67, 0xbf,
+  0xbf, 0xd4, 0xb2, 0xe7, 0x73, 0xf9, 0xd8, 0x29,
+  0xdc, 0x86, 0x8a, 0x9e, 0x79, 0x3b, 0x90, 0xd1,
+  0x5c, 0xcf, 0xe7, 0x60, 0xa7, 0x72, 0x1a, 0x2c,
+  0xe8, 0x13, 0xe6, 0xb1, 0x5c, 0xf8, 0x53, 0xb9,
+  0x0d, 0x12, 0x14, 0xff, 0x7a, 0x9a, 0xdf, 0xea,
+  0xca, 0x9d, 0x33, 0xdd, 0x87, 0xd4, 0x03, 0x09,
+  0xe6, 0xe9, 0x65, 0x61, 0xd3, 0xfb, 0x2d, 0x5a,
+  0xe0, 0xd0, 0x74, 0x9d, 0x89, 0x88, 0xf4, 0x22,
+  0xea, 0x5b, 0x72, 0x79, 0xff, 0xce, 0x67, 0x3d,
+  0xd8, 0x29, 0xdc, 0x86, 0x89, 0xf2, 0x11, 0x52,
+  0x5e, 0xae, 0x3b, 0x2b, 0x23, 0xcf, 0x85, 0x3b,
+  0x90, 0xd1, 0x59, 0x4f, 0xfb, 0x9e, 0xec, 0x14,
+  0xee, 0x43, 0x44, 0xdd, 0x37, 0x9d, 0x87, 0xec,
+  0xc3, 0x09, 0xf0, 0xa7, 0x72, 0x1a, 0x25, 0x69,
+  0xfe, 0xd7, 0x6f, 0x6e, 0xd1, 0x32, 0xa7, 0x4f,
+  0x9c, 0xce, 0x7b, 0xb0, 0xfb, 0x78, 0xc2, 0x7c,
+  0x29, 0xdc, 0x86, 0x89, 0x72, 0x7f, 0xbd, 0xcf,
+  0xbf, 0xd5, 0x95, 0x3a, 0x79, 0xb7, 0xbe, 0xa7,
+  0x4f, 0x9c, 0xce, 0x7b, 0xb1, 0x11, 0x76, 0x30,
+  0xe3, 0x89, 0xff, 0x9d, 0xcf, 0x76, 0x0a, 0x77,
+  0x21, 0xa2, 0x3b, 0x9f, 0xeb, 0xdb, 0x1e, 0xee,
+  0xfd, 0x4e, 0x9f, 0x9b, 0x9f, 0x54, 0xcf, 0x9d,
+  0x3f, 0x6a, 0x9f, 0xcb, 0x75, 0xce, 0x9f, 0x0a,
+  0x77, 0x21, 0xa2, 0xa1, 0x9f, 0x65, 0xaf, 0x94,
+  0x1d, 0x27, 0x6a, 0x88, 0xb7, 0x6e, 0x17, 0xe1,
+  0x8d, 0xcc, 0x27, 0xc2, 0x9d, 0xc8, 0x68, 0xaa,
+  0x27, 0xfd, 0xcf, 0x76, 0x0a, 0x77, 0x21, 0xa2,
+  0x6b, 0x93, 0xb0, 0xfd, 0x98, 0x61, 0x3f, 0x9d,
+  0x82, 0x9d, 0xc8, 0x68, 0xab, 0x27, 0xfe, 0x77,
+  0x3d, 0xd8, 0x29, 0xdc, 0x86, 0x89, 0x12, 0x7c,
+  0x29, 0xdc, 0x86, 0x8b, 0x4a, 0x7f, 0xdc, 0xf7,
+  0x60, 0xa7, 0x72, 0x1a, 0x27, 0xd9, 0x3b, 0x0f,
+  0xd9, 0x86, 0x13, 0xff, 0x9c, 0xce, 0x7b, 0xb0,
+  0x53, 0xb9, 0x0d, 0x14, 0x24, 0xfa, 0xde, 0xa1,
+  0x44, 0xe9, 0xf0, 0xa7, 0x72, 0x1a, 0x28, 0xf9,
+  0xff, 0xfb, 0x36, 0xb2, 0xef, 0x75, 0xff, 0xc0,
+  0xad, 0x54, 0x05, 0x4f, 0x9c, 0xce, 0x7b, 0x95,
+  0x16, 0x98, 0x4f, 0xa8, 0x61, 0x0a, 0xbb, 0x5d,
+  0x44, 0x32, 0x1e, 0x97, 0x89, 0x9a, 0xe1, 0xde,
+  0x90, 0xc1, 0xa4, 0x9d, 0xa3, 0xbb, 0x43, 0x08,
+  0x04, 0xf7, 0x8c, 0x1a, 0x7f, 0x3b, 0x05, 0x3b,
+  0x90, 0xd1, 0x11, 0x4f, 0xd8, 0x29, 0xdc, 0x86,
+  0x88, 0xae, 0x7f, 0xb5, 0x6e, 0xc1, 0x4e, 0xe4,
+  0x34, 0x57, 0x10, 0xe3, 0xfa, 0xe3, 0x59, 0xec,
+  0xb7, 0x5c, 0xe9, 0xfd, 0x9e, 0x10, 0x03, 0x4a,
+  0x9d, 0x2d, 0x53, 0xe7, 0xa7, 0x52, 0x09, 0xff,
+  0xbb, 0xcf, 0xf7, 0xef, 0xa5, 0x87, 0x0e, 0x9f,
+  0x67, 0xb6, 0x1c, 0x3a, 0x75, 0xeb, 0xeb, 0x1f,
+  0x55, 0xd1, 0x27, 0xc2, 0x9d, 0xc8, 0x68, 0xa7,
+  0xa1, 0xb8, 0x8f, 0xb5, 0x84, 0xbe, 0x1a, 0x4f,
+  0xfe, 0xe7, 0xbb, 0x6f, 0xf0, 0x6b, 0x55, 0x01,
+  0xd0, 0xe4, 0x40, 0xec, 0x6f, 0x39, 0xdb, 0x61,
+  0xd3, 0xe5, 0x78, 0x34, 0x79, 0xd3, 0xc9, 0xdc,
+  0x86, 0x8a, 0xce, 0x1a, 0x3d, 0x31, 0x28, 0x9f,
+  0xa8, 0x62, 0xfd, 0xf5, 0x3a, 0x72, 0xd1, 0xe3,
+  0xa7, 0xd7, 0x06, 0xff, 0xbc, 0xe9, 0xf6, 0x35,
+  0x46, 0x80, 0x3a, 0x4e, 0xc4, 0x60, 0x09, 0x15,
+  0x8b, 0xb8, 0x73, 0x79, 0x54, 0xff, 0xce, 0xe7,
+  0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x22, 0xcf, 0xe7,
+  0x60, 0xa7, 0x72, 0x1a, 0x2c, 0x99, 0xfc, 0xec,
+  0x14, 0xee, 0x43, 0x45, 0xb1, 0x3b, 0x2b, 0x87,
+  0x4f, 0x85, 0x3b, 0x90, 0xd1, 0x6d, 0xc9, 0xcf,
+  0x3c, 0xac, 0x1a, 0x9f, 0xf3, 0x71, 0xb9, 0xaa,
+  0xd7, 0xb6, 0x7d, 0x40, 0x74, 0xfc, 0xbf, 0x7e,
+  0xda, 0x30, 0xe9, 0xf0, 0xa7, 0x72, 0x1a, 0x2f,
+  0x09, 0xeb, 0xea, 0x65, 0x8e, 0x9f, 0xf9, 0x77,
+  0xb2, 0x97, 0xdf, 0x3f, 0x7a, 0x9d, 0x3e, 0xcf,
+  0x81, 0xbd, 0x4e, 0x9f, 0x2e, 0xfd, 0x3a, 0xa7,
+  0x4e, 0xba, 0x80, 0xe9, 0x3b, 0x55, 0xe4, 0xe1,
+  0x28, 0x4d, 0xc2, 0xfa, 0x4c, 0x2c, 0x48, 0x04,
+  0x7f, 0x94, 0xdc, 0xa6, 0x77, 0xb2, 0x93, 0xa7,
+  0xc2, 0x9d, 0xc8, 0x68, 0xbd, 0x27, 0xfd, 0xfe,
+  0xbb, 0xd7, 0x5d, 0xfd, 0x41, 0xd3, 0xec, 0x65,
+  0xbb, 0x63, 0xa4, 0xed, 0x91, 0x69, 0x83, 0x9b,
+  0xcc, 0x1b, 0xd0, 0x61, 0x59, 0x0f, 0x94, 0x42,
+  0xd7, 0x23, 0xf0, 0x42, 0x4f, 0x46, 0x5e, 0x29,
+  0xec, 0x4c, 0x01, 0xdf, 0xe1, 0x0b, 0xa4, 0x75,
+  0x61, 0x8c, 0xda, 0x7b, 0x2d, 0xd7, 0x3a, 0x7f,
+  0x67, 0x84, 0x00, 0xd2, 0xa7, 0x4b, 0x54, 0xf9,
+  0xe9, 0xd4, 0x82, 0x7c, 0x29, 0xdc, 0x86, 0x88,
+  0x8e, 0x7f, 0xfa, 0xda, 0x56, 0xb8, 0xcf, 0xe3,
+  0x6d, 0xca, 0xdd, 0x4e, 0x9f, 0xf3, 0xd6, 0x81,
+  0xcb, 0xdf, 0xd7, 0x3a, 0x7f, 0xff, 0x96, 0xdd,
+  0xeb, 0xad, 0xbf, 0x97, 0xb7, 0xad, 0x9e, 0x09,
+  0xd3, 0x50, 0xc2, 0xa6, 0x08, 0x4a, 0x9f, 0xf9,
+  0xee, 0x4b, 0x79, 0xab, 0x2d, 0x0e, 0x01, 0xad,
+  0x08, 0xbc, 0xfe, 0xcd, 0x5f, 0xf2, 0xdd, 0x73,
+  0xa7, 0xff, 0xe4, 0x70, 0xf7, 0xfd, 0x77, 0x0a,
+  0xdf, 0xfc, 0x03, 0xa1, 0xb8, 0xa9, 0xc7, 0x0b,
+  0x50, 0xc2, 0x95, 0xa1, 0x3e, 0xe8, 0x49, 0x5d,
+  0x75, 0xb1, 0xac, 0xf8, 0x53, 0xb9, 0x0d, 0x11,
+  0x74, 0xfa, 0xe0, 0xdf, 0xf7, 0x96, 0xcf, 0x69,
+  0x3b, 0x0f, 0x9f, 0x8c, 0x21, 0xc9, 0x84, 0x3e,
+  0x1c, 0x53, 0xff, 0x33, 0x9e, 0xec, 0x14, 0xee,
+  0x43, 0x44, 0xcd, 0x3a, 0x95, 0xa9, 0xd3, 0x93,
+  0xcc, 0x3a, 0x76, 0xaa, 0xd4, 0xd5, 0x47, 0x4f,
+  0x93, 0xad, 0xe6, 0x8e, 0x9f, 0xf9, 0xbf, 0xd7,
+  0xf2, 0x7b, 0x6b, 0xe2, 0x1d, 0x3f, 0xff, 0xda,
+  0x77, 0xd3, 0xf9, 0xb5, 0xb4, 0xdd, 0x65, 0x78,
+  0xad, 0x07, 0x46, 0x22, 0xc6, 0xc8, 0xf3, 0xff,
+  0xed, 0xbd, 0xfa, 0x32, 0xbe, 0xeb, 0x38, 0x21,
+  0x09, 0x53, 0xc9, 0xdc, 0x86, 0x8b, 0x3e, 0x7f,
+  0xfb, 0xc3, 0x6e, 0xdd, 0x8d, 0xbf, 0x95, 0xcf,
+  0x9d, 0x38, 0x21, 0x09, 0x53, 0xfe, 0xe7, 0xd7,
+  0xf8, 0x9b, 0x60, 0x94, 0xe2, 0xf2, 0x7f, 0x96,
+  0xde, 0xdb, 0xfd, 0xcd, 0x1d, 0x3f, 0xde, 0xfe,
+  0xdb, 0xf6, 0xd2, 0xf5, 0x3a, 0x11, 0x3b, 0x31,
+  0x58, 0xb1, 0x58, 0x1b, 0x6e, 0x96, 0xd8, 0xe6,
+  0x7f, 0xff, 0xfe, 0xcc, 0x05, 0x73, 0x3f, 0xaf,
+  0x78, 0xfd, 0x72, 0xce, 0xaf, 0xf2, 0x86, 0x63,
+  0x0e, 0x9d, 0x55, 0xa0, 0xe9, 0xda, 0x99, 0x63,
+  0xa1, 0xe8, 0xc4, 0xac, 0x22, 0xae, 0x39, 0x3d,
+  0x48, 0x34, 0x43, 0xa7, 0xd6, 0xfa, 0xe0, 0x99,
+  0x3f, 0xef, 0x0b, 0xf0, 0x68, 0xd3, 0xb6, 0x34,
+  0x41, 0xae, 0x34, 0xb3, 0xee, 0x4f, 0x31, 0x4e,
+  0x9f, 0x9f, 0x6f, 0xf5, 0x37, 0x3a, 0x58, 0x87,
+  0xa7, 0xf2, 0x59, 0xff, 0xff, 0x70, 0x6f, 0x96,
+  0xba, 0xe7, 0xe9, 0xbe, 0x0f, 0xa8, 0xe6, 0x1d,
+  0x0f, 0x4d, 0x03, 0x21, 0x5f, 0xf2, 0x69, 0xf8,
+  0x73, 0x6a, 0xd9, 0x4e, 0x9f, 0xff, 0xda, 0x7f,
+  0xb5, 0xee, 0xdf, 0xfe, 0xbd, 0x7d, 0x4d, 0xbc,
+  0x13, 0xa7, 0xff, 0xfa, 0xb5, 0x51, 0xba, 0xb9,
+  0x99, 0x7a, 0xef, 0xaf, 0x3f, 0x0e, 0x9e, 0xb6,
+  0x79, 0xb1, 0xd1, 0xe4, 0x44, 0xd9, 0x9a, 0x66,
+  0x6a, 0x86, 0x8b, 0xf2, 0x7f, 0xe7, 0xdf, 0x47,
+  0xbd, 0x97, 0xba, 0xb0, 0xe9, 0xff, 0xbd, 0x9f,
+  0xcc, 0xae, 0xe7, 0xd5, 0x87, 0x45, 0x28, 0x8b,
+  0xaa, 0x34, 0xf7, 0xfe, 0xa8, 0x74, 0x2a, 0x63,
+  0x5b, 0x11, 0xe4, 0x2c, 0xf8, 0x92, 0x7f, 0xff,
+  0xe6, 0xf5, 0xb7, 0x98, 0xe6, 0x9f, 0xc3, 0xbe,
+  0xde, 0xa6, 0xa9, 0xea, 0x0e, 0x9f, 0x69, 0x95,
+  0xf7, 0xce, 0x9e, 0xdf, 0xa7, 0x54, 0xe9, 0xff,
+  0x5e, 0xa0, 0xf5, 0x34, 0xbf, 0x2e, 0x74, 0x29,
+  0xf2, 0xe1, 0x24, 0xcd, 0x68, 0x74, 0x98, 0x74,
+  0x52, 0x6a, 0x1b, 0xb1, 0x89, 0xff, 0xff, 0x5b,
+  0xd4, 0xdf, 0x29, 0xb8, 0x8a, 0xdc, 0x1b, 0xfe,
+  0xfb, 0x61, 0xd3, 0x82, 0x10, 0x95, 0x3d, 0xb6,
+  0xdd, 0xf2, 0x9c, 0x5e, 0x4f, 0xfb, 0xac, 0x9e,
+  0xed, 0xd5, 0xeb, 0x1d, 0x0a, 0x99, 0x12, 0x13,
+  0xfa, 0x11, 0x76, 0x32, 0x9f, 0xfb, 0x3f, 0x4d,
+  0xf0, 0x7d, 0x47, 0x30, 0xe9, 0xf6, 0x5d, 0xec,
+  0xb1, 0xd0, 0xa7, 0xd7, 0x54, 0x49, 0x81, 0x63,
+  0xa7, 0xea, 0x1a, 0x7b, 0x70, 0x68, 0x3a, 0x7f,
+  0x6b, 0xb6, 0x5e, 0xde, 0xb9, 0xd3, 0x78, 0x4e,
+  0x8d, 0x54, 0x7f, 0xde, 0x34, 0xb1, 0xac, 0xff,
+  0xed, 0xb6, 0x5d, 0x85, 0x6f, 0xe4, 0xf6, 0xc7,
+  0x49, 0xcd, 0xd1, 0x99, 0xd5, 0xaa, 0xc3, 0x8a,
+  0x37, 0x41, 0x5e, 0xd0, 0xd8, 0xc8, 0xf5, 0x69,
+  0x8c, 0x73, 0xc6, 0xad, 0x47, 0x10, 0x26, 0xac,
+  0x2c, 0xb4, 0xa0, 0xde, 0x41, 0x03, 0xd7, 0xe1,
+  0x1b, 0x58, 0xda, 0xaf, 0x0a, 0xc0, 0x90, 0xea,
+  0x42, 0x53, 0x79, 0xac, 0x39, 0x9d, 0x25, 0x6a,
+  0x69, 0xb4, 0xff, 0xe7, 0x33, 0x9e, 0xec, 0x14,
+  0xee, 0x43, 0x44, 0xd9, 0x3f, 0x9d, 0x82, 0x9d,
+  0xc8, 0x68, 0xab, 0x67, 0xf3, 0xdf, 0xa5, 0xfe,
+  0xaf, 0x3a, 0x7b, 0x2d, 0xd7, 0x3a, 0x5a, 0xa6,
+  0x1e, 0xa7, 0xcd, 0x27, 0xc2, 0x9d, 0xc8, 0x68,
+  0xad, 0x27, 0xff, 0x91, 0x47, 0x01, 0xcc, 0xe7,
+  0xaf, 0x90, 0xe9, 0xff, 0xe7, 0xd7, 0x3e, 0xac,
+  0xec, 0xbd, 0xd5, 0x87, 0x4d, 0x7b, 0xaa, 0x25,
+  0xf9, 0x2a, 0x7f, 0x2b, 0x6d, 0xf7, 0xfa, 0x80,
+  0xe9, 0xfa, 0x8c, 0xb7, 0xb1, 0x87, 0x4f, 0xf6,
+  0x37, 0xfd, 0x43, 0x4b, 0xea, 0x74, 0xfe, 0x7e,
+  0x5f, 0xbe, 0x0d, 0x0e, 0x93, 0x9b, 0x89, 0xf9,
+  0x61, 0x67, 0xa1, 0x8f, 0x62, 0xde, 0x36, 0xf9,
+  0x6d, 0xcf, 0x27, 0xf3, 0xb0, 0x53, 0xb9, 0x0d,
+  0x16, 0x04, 0xf8, 0x53, 0xb9, 0x0d, 0x13, 0xac,
+  0xff, 0xfe, 0xb2, 0xd1, 0xb6, 0x31, 0xd5, 0xae,
+  0x5b, 0xd5, 0xd2, 0x83, 0xa7, 0xce, 0x67, 0x3d,
+  0xd8, 0x89, 0x56, 0x8c, 0x27, 0xc2, 0x9d, 0xc8,
+  0x68, 0xb6, 0x67, 0xfc, 0x05, 0xab, 0xad, 0xe4,
+  0xe1, 0x3a, 0x4e, 0xc3, 0xec, 0xe3, 0x09, 0xe4,
+  0xee, 0x43, 0x45, 0xcd, 0x26, 0x1d, 0x33, 0xb0,
+  0x4d, 0xd8, 0x4a, 0xe7, 0xf3, 0xb0, 0x53, 0xb9,
+  0x0d, 0x17, 0x7c, 0xf3, 0xb5, 0xec, 0x03, 0xa1,
+  0x5b, 0x49, 0x8c, 0xa7, 0x5d, 0xa1, 0x85, 0x2a,
+  0x5e, 0x95, 0x02, 0x2e, 0x4c, 0x86, 0x80, 0x21,
+  0x59, 0x56, 0x1b, 0x95, 0xef, 0x3b, 0x9f, 0xf7,
+  0xf9, 0xcb, 0x5a, 0xb3, 0x9e, 0x74, 0xfe, 0xfd,
+  0x18, 0xdf, 0x75, 0xd6, 0x74, 0xf8, 0x53, 0xb9,
+  0x0d, 0x12, 0xbc, 0xf6, 0x9c, 0x2f, 0x3a, 0x7f,
+  0xff, 0x7a, 0xfc, 0xce, 0xf8, 0x2c, 0x1e, 0xfd,
+  0x09, 0xea, 0x0e, 0x95, 0xb6, 0x44, 0x1f, 0x10,
+  0xce, 0xe7, 0xb9, 0x53, 0x14, 0xc3, 0x8a, 0xc2,
+  0xce, 0x75, 0xd7, 0x62, 0xa7, 0xff, 0x5b, 0xbd,
+  0x75, 0x7f, 0x86, 0x8d, 0x00, 0x54, 0xfe, 0xe4,
+  0x76, 0xc2, 0xdd, 0xb9, 0x4f, 0x9e, 0xa3, 0x92,
+  0x72, 0x2a, 0x4b, 0x64, 0x6a, 0x2d, 0xa1, 0x59,
+  0x3f, 0xf9, 0xcc, 0xe7, 0xbb, 0x05, 0x3b, 0x90,
+  0xd1, 0x30, 0xcf, 0xff, 0xd8, 0xed, 0xe3, 0xc0,
+  0x76, 0xbb, 0xbc, 0x2b, 0x57, 0x9d, 0x3f, 0xf6,
+  0xa9, 0x94, 0xbf, 0x4e, 0xbf, 0xd5, 0xe7, 0x4f,
+  0xf7, 0xd7, 0xa8, 0xbe, 0xbe, 0x13, 0xa7, 0xe6,
+  0x2e, 0x7e, 0xfa, 0x87, 0x4f, 0x97, 0x3f, 0x7d,
+  0x43, 0xa7, 0xeb, 0x7a, 0xf5, 0xea, 0x77, 0x1e,
+  0xc3, 0x0b, 0xe7, 0xff, 0xfd, 0xfc, 0x0b, 0x7d,
+  0xf2, 0xdb, 0xbf, 0x94, 0x7b, 0x3f, 0x4b, 0xea,
+  0x74, 0xfc, 0xdb, 0x7d, 0xfe, 0xa0, 0x3a, 0x7f,
+  0xf2, 0xdc, 0x0a, 0xfc, 0xa6, 0xf4, 0x68, 0x13,
+  0xa1, 0x4f, 0xf7, 0xc6, 0x33, 0xf5, 0x7d, 0xad,
+  0x9d, 0x73, 0xa7, 0xff, 0xfc, 0x38, 0xd9, 0x7f,
+  0x7d, 0xdb, 0xfe, 0xb6, 0xef, 0x5d, 0x6f, 0x53,
+  0xa5, 0x94, 0xa2, 0x7c, 0x4b, 0xe7, 0xbe, 0xa0,
+  0xde, 0x74, 0xf7, 0x6f, 0xdb, 0x0e, 0x93, 0x9b,
+  0x8a, 0xd0, 0x76, 0x4a, 0x48, 0x48, 0xb4, 0x91,
+  0x68, 0x78, 0x7e, 0x18, 0x17, 0x28, 0xd0, 0x8e,
+  0x7c, 0x29, 0xdc, 0x86, 0x8a, 0xba, 0x7f, 0x9e,
+  0xec, 0x14, 0xee, 0x43, 0x44, 0x79, 0x27, 0x61,
+  0xf8, 0xf1, 0x84, 0xfe, 0x76, 0x0a, 0x77, 0x21,
+  0xa2, 0xc1, 0x9f, 0xce, 0xc1, 0x4e, 0xe4, 0x34,
+  0x59, 0x53, 0xf9, 0xd8, 0x29, 0xdc, 0x86, 0x8b,
+  0x4e, 0x79, 0x3b, 0x90, 0xd1, 0x6e, 0x4f, 0xfc,
+  0xb8, 0x39, 0xfd, 0xd6, 0xca, 0x42, 0x74, 0x09,
+  0xf7, 0xd4, 0xae, 0x7f, 0xdc, 0xf7, 0x60, 0xa7,
+  0x72, 0x1a, 0x28, 0x79, 0xfb, 0xed, 0xcc, 0x15,
+  0xa9, 0xd3, 0xff, 0xf6, 0x6d, 0x65, 0xde, 0xeb,
+  0xff, 0x81, 0x5a, 0xa8, 0x0a, 0x93, 0xb1, 0x1e,
+  0x6c, 0x21, 0xd1, 0x1b, 0x50, 0xbe, 0x7f, 0x3b,
+  0x05, 0x3b, 0x90, 0xd1, 0x79, 0xc2, 0xaf, 0xf7,
+  0x3d, 0x13, 0x65, 0x2c, 0x97, 0x3f, 0x4c, 0x3f,
+  0xc4, 0x99, 0x87, 0x76, 0x3b, 0xfc, 0x73, 0xad,
+  0x91, 0xa7, 0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x14,
+  0xb4, 0xfe, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0xc2,
+  0x9f, 0xce, 0xc1, 0x4e, 0xe4, 0x34, 0x59, 0x73,
+  0xce, 0xd7, 0xaa, 0xf9, 0xba, 0x9d, 0x39, 0xdb,
+  0xd8, 0x74, 0xf2, 0x39, 0x6a, 0x87, 0xa5, 0xa1,
+  0xa4, 0xff, 0xe7, 0x33, 0x9e, 0xec, 0x14, 0xee,
+  0x43, 0x45, 0x19, 0x3f, 0x9c, 0xad, 0x94, 0x54,
+  0x07, 0x43, 0xd3, 0xbf, 0x13, 0xb6, 0x1d, 0xf4,
+  0x23, 0x6a, 0x71, 0x75, 0x29, 0xff, 0x9d, 0xcf,
+  0x76, 0x0a, 0x77, 0x21, 0xa2, 0x39, 0x9f, 0xfc,
+  0xe6, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68, 0x9c,
+  0xa7, 0xf3, 0xb0, 0x53, 0xb9, 0x0d, 0x16, 0x64,
+  0xfe, 0x76, 0x0a, 0x77, 0x21, 0xa2, 0xdd, 0x9f,
+  0xfc, 0xe6, 0x73, 0xdd, 0x82, 0x9d, 0xc8, 0x68,
+  0xa4, 0x27, 0xfe, 0x77, 0x3d, 0xd8, 0x29, 0xdc,
+  0x86, 0x89, 0x4a, 0x28, 0x4e, 0xc9, 0xa4, 0xc6,
+  0x29, 0x7c, 0xee, 0xe7, 0x6d, 0xea, 0x53, 0xfe,
+  0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1, 0x3b, 0x4f,
+  0xff, 0xbd, 0xb6, 0x8c, 0x56, 0xfe, 0xdb, 0xeb,
+  0xfc, 0x43, 0xa4, 0xe6, 0x22, 0x7f, 0x91, 0xa7,
+  0xfe, 0xe6, 0x5b, 0x13, 0xac, 0xbb, 0xde, 0x74,
+  0xff, 0xdf, 0xcb, 0x75, 0x19, 0x5f, 0xf5, 0x27,
+  0x4d, 0xa8, 0xed, 0x91, 0x0f, 0x54, 0x38, 0x62,
+  0x38, 0xb5, 0x21, 0x5f, 0x3e, 0x14, 0xee, 0x43,
+  0x44, 0x59, 0x3f, 0xee, 0x7b, 0xb0, 0x53, 0xb9,
+  0x0d, 0x12, 0xec, 0xff, 0xfd, 0x9b, 0x59, 0x77,
+  0xba, 0xff, 0xe0, 0x56, 0xaa, 0x02, 0xa4, 0xec,
+  0x46, 0x9b, 0x0c, 0x35, 0x11, 0xa7, 0xff, 0x39,
+  0x9c, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x26, 0x29,
+  0xfc, 0xec, 0x14, 0xee, 0x43, 0x45, 0x53, 0x3f,
+  0xf9, 0xcc, 0xe7, 0xbb, 0x05, 0x3b, 0x90, 0xd1,
+  0x3a, 0x4f, 0xef, 0x70, 0xab, 0xf9, 0xb1, 0xd3,
+  0xe6, 0x95, 0xa5, 0xa9, 0xd3, 0xf0, 0x73, 0xcd,
+  0xb3, 0xe7, 0x4f, 0x7a, 0xca, 0xef, 0x1e, 0xb5,
+  0x4a, 0x27, 0xfe, 0xd2, 0xb7, 0x5a, 0x5d, 0xa3,
+  0x5e, 0x61, 0xd0, 0xc4, 0x41, 0x58, 0xe6, 0x7f,
+  0xdc, 0xf7, 0x60, 0xa7, 0x72, 0x1a, 0x27, 0x79,
+  0xf5, 0xf4, 0xe6, 0x78, 0xa9, 0x3b, 0x64, 0xe6,
+  0xf2, 0x30, 0xa6, 0x11, 0xf2, 0x34, 0xff, 0xe7,
+  0x33, 0x9e, 0xec, 0x14, 0xee, 0x43, 0x45, 0x0b,
+  0x3f, 0xf9, 0xcc, 0xe7, 0xbb, 0x05, 0x3b, 0x90,
+  0xd1, 0x49, 0x4f, 0xff, 0xec, 0xab, 0xb7, 0xe3,
+  0x56, 0xe6, 0x5e, 0xcb, 0x7d, 0x18, 0x74, 0x50,
+  0xb8, 0x06, 0xf3, 0x84, 0x52, 0x13, 0xb6, 0x47,
+  0xda, 0x04, 0x9d, 0x14, 0xb5, 0x14, 0xa7, 0xf3,
+  0xb0, 0x53, 0xb9, 0x0d, 0x11, 0x24, 0xff, 0xe7,
+  0x33, 0x9e, 0xec, 0x14, 0xee, 0x43, 0x44, 0xbd,
+  0x3e, 0x14, 0xee, 0x43, 0x45, 0x2f, 0x3f, 0x97,
+  0x66, 0xff, 0x31, 0x6a, 0x74, 0x9d, 0x87, 0xcd,
+  0x73, 0x09, 0xfc, 0xec, 0x14, 0xee, 0x43, 0x45,
+  0x39, 0x3f, 0xef, 0x0f, 0x56, 0xd9, 0x9f, 0x43,
+  0xa7, 0xfd, 0x96, 0x51, 0xc7, 0x04, 0x21, 0x2a,
+  0x6f, 0x04, 0xe9, 0xa8, 0x76, 0xc8, 0x8d, 0xd4,
+  0x3b, 0x6f, 0x3c, 0x9f, 0x0a, 0x77, 0x21, 0xa2,
+  0xbc, 0x9f, 0xff, 0xb3, 0x6b, 0x2e, 0xf7, 0x5f,
+  0xfc, 0x0a, 0xd5, 0x40, 0x54, 0x9d, 0x88, 0x8d,
+  0xd4, 0x30, 0x9f, 0xf9, 0xdc, 0xf7, 0x60, 0xa7,
+  0x72, 0x1a, 0x24, 0x79, 0xde, 0x02, 0x9d, 0x39,
+  0x31, 0x85, 0x38, 0xbb, 0x9f, 0x0a, 0x77, 0x21,
+  0xa2, 0x48, 0x9e, 0x77, 0x3d, 0xca, 0x7b, 0x38,
+  0x53, 0x3f, 0xf3, 0xb9, 0xee, 0xc1, 0x4e, 0xe4,
+  0x34, 0x49, 0x53, 0xe1, 0x4e, 0xe4, 0x34, 0x5e,
+  0x33, 0xf6, 0x9f, 0xa7, 0xa9, 0xa9, 0xd3, 0xea,
+  0xd6, 0xf8, 0x87, 0x4f, 0xf3, 0xdd, 0x82, 0x9d,
+  0xc8, 0x68, 0x93, 0x64, 0xec, 0x46, 0x3d, 0x26,
+  0x02, 0x61, 0xc4, 0xd0, 0xab, 0xa5, 0x34, 0x1d,
+  0xbe, 0x17, 0x1b, 0x13, 0xfa, 0x19, 0x0d, 0x43,
+  0x45, 0x85, 0x76, 0x86, 0x05, 0xcd, 0xf4, 0x8c,
+  0x4e, 0x16, 0x36, 0x9d, 0x1a, 0x23, 0xae, 0x7c,
+  0x79, 0x3b, 0x47, 0xb5, 0x96, 0xe4, 0x47, 0x5c,
+  0xa5, 0x64, 0xaf, 0xb3, 0x69, 0x9e, 0x7b, 0xf4,
+  0xe6, 0x26, 0xae, 0x3b, 0x06, 0xa9, 0xa9, 0xe3,
+  0x48, 0xf0, 0x66, 0x22, 0x86, 0x2d, 0x3b, 0x51,
+  0xd4, 0xe7, 0x80, 0x4b, 0x0e, 0x6e, 0xe1, 0x63,
+  0xf9, 0xe4, 0x8a, 0xd2, 0x4c, 0xef, 0x5c, 0x90,
+  0x69, 0x4a, 0xef, 0x6d, 0x29, 0x80, 0x32, 0x83,
+  0x75, 0x23, 0xde, 0xdf, 0x3a, 0x02, 0xdf, 0x3b,
+  0x4d, 0x00,
 };
 
-static const unsigned kPreloadedHSTSBits = 94645;
+static const unsigned kPreloadedHSTSBits = 94538;
 
-static const unsigned kHSTSRootPosition = 94068;
+static const unsigned kHSTSRootPosition = 93961;
 
 #endif // NET_HTTP_TRANSPORT_SECURITY_STATE_STATIC_H_
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index 2423f5a..2517d20 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -756,7 +756,6 @@
     { "name": "mnsure.org", "include_subdomains": true, "mode": "force-https" },
     { "name": "getcloak.com", "mode": "force-https" },
     { "name": "www.getcloak.com", "mode": "force-https" },
-    { "name": "matteomarescotti.name", "include_subdomains": true, "mode": "force-https" },
     { "name": "www.heliosnet.com", "include_subdomains": true, "mode": "force-https" },
     { "name": "opsmate.com", "mode": "force-https" },
     { "name": "www.opsmate.com", "include_subdomains": true, "mode": "force-https" },
diff --git a/net/http/url_security_manager_win.cc b/net/http/url_security_manager_win.cc
index 4e2d938..db5620f 100644
--- a/net/http/url_security_manager_win.cc
+++ b/net/http/url_security_manager_win.cc
@@ -53,10 +53,10 @@
   if (!const_cast<URLSecurityManagerWin*>(this)->EnsureSystemSecurityManager())
     return false;
 
-  std::wstring url_w = base::ASCIIToWide(auth_origin.spec());
+  base::string16 url16 = base::ASCIIToUTF16(auth_origin.spec());
   DWORD policy = 0;
   HRESULT hr;
-  hr = security_manager_->ProcessUrlAction(url_w.c_str(),
+  hr = security_manager_->ProcessUrlAction(url16.c_str(),
                                            URLACTION_CREDENTIALS_USE,
                                            reinterpret_cast<BYTE*>(&policy),
                                            sizeof(policy), NULL, 0,
@@ -84,7 +84,7 @@
       // URLZONE_INTERNET      3
       // URLZONE_UNTRUSTED     4
       DWORD zone = 0;
-      hr = security_manager_->MapUrlToZone(url_w.c_str(), &zone, 0);
+      hr = security_manager_->MapUrlToZone(url16.c_str(), &zone, 0);
       if (FAILED(hr)) {
         LOG(ERROR) << "IInternetSecurityManager::MapUrlToZone failed: " << hr;
         return false;
diff --git a/net/net.gyp b/net/net.gyp
index 8a292aa..7b4b5d6 100644
--- a/net/net.gyp
+++ b/net/net.gyp
@@ -299,8 +299,6 @@
                 ],
               }]
             ],
-            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
-            'msvs_disabled_warnings': [4267, ],
           },
         ],
         [ 'use_openssl_certs == 0', {
@@ -410,6 +408,8 @@
               'udp/udp_socket_libevent.cc',
               'udp/udp_socket_libevent.h',
             ],
+             # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+            'msvs_disabled_warnings': [4267, ],
           }, { # else: OS != "win"
             'sources!': [
               'base/winsock_init.cc',
@@ -597,8 +597,6 @@
               ],
             }],
           ],
-          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
-          'msvs_disabled_warnings': [4267, ],
         }],
         [ 'os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios"', {
           'conditions': [
@@ -712,6 +710,8 @@
               'dns/dns_config_service_posix_unittest.cc',
               'http/http_auth_gssapi_posix_unittest.cc',
             ],
+            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+            'msvs_disabled_warnings': [4267, ],
             'conditions': [
               [ 'icu_use_data_file_flag == 0', {
                 # This is needed to trigger the dll copy step on windows.
@@ -976,8 +976,6 @@
               ],
             }],
           ],
-          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
-          'msvs_disabled_warnings': [4267, ],
         }],
         ['os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios"', {
           'conditions': [
diff --git a/net/net.gypi b/net/net.gypi
index e3068be..f43c67f 100644
--- a/net/net.gypi
+++ b/net/net.gypi
@@ -273,10 +273,10 @@
       'base/proxy_delegate.h',
       'base/request_priority.cc',
       'base/request_priority.h',
-      'base/sdch_dictionary_fetcher.cc',
-      'base/sdch_dictionary_fetcher.h',
       'base/sdch_manager.cc',
       'base/sdch_manager.h',
+      'base/sdch_observer.cc',
+      'base/sdch_observer.h',
       'base/static_cookie_policy.cc',
       'base/static_cookie_policy.h',
       'base/test_data_stream.cc',
@@ -656,7 +656,6 @@
       'http/http_status_code.cc',
       'http/http_status_code.h',
       'http/http_stream.h',
-      'http/http_stream_base.h',
       'http/http_stream_factory.cc',
       'http/http_stream_factory.h',
       'http/http_stream_factory_impl.cc',
@@ -1138,6 +1137,8 @@
       'url_request/http_user_agent_settings.h',
       'url_request/redirect_info.cc',
       'url_request/redirect_info.h',
+      'url_request/sdch_dictionary_fetcher.cc',
+      'url_request/sdch_dictionary_fetcher.h',
       'url_request/static_http_user_agent_settings.cc',
       'url_request/static_http_user_agent_settings.h',
       'url_request/url_fetcher.cc',
@@ -1296,7 +1297,6 @@
       'base/prioritized_dispatcher_unittest.cc',
       'base/priority_queue_unittest.cc',
       'base/registry_controlled_domains/registry_controlled_domain_unittest.cc',
-      'base/sdch_dictionary_fetcher_unittest.cc',
       'base/sdch_manager_unittest.cc',
       'base/static_cookie_policy_unittest.cc',
       'base/test_completion_callback_unittest.cc',
@@ -1695,6 +1695,7 @@
       'tools/dump_cache/url_utilities_unittest.cc',
       'tools/tld_cleanup/tld_cleanup_util_unittest.cc',
       'udp/udp_socket_unittest.cc',
+      'url_request/sdch_dictionary_fetcher_unittest.cc',
       'url_request/url_fetcher_impl_unittest.cc',
       'url_request/url_fetcher_response_writer_unittest.cc',
       'url_request/url_request_context_builder_unittest.cc',
diff --git a/net/proxy/proxy_resolver_winhttp.cc b/net/proxy/proxy_resolver_winhttp.cc
index 2d90dab..755a1bf 100644
--- a/net/proxy/proxy_resolver_winhttp.cc
+++ b/net/proxy/proxy_resolver_winhttp.cc
@@ -54,8 +54,8 @@
   WINHTTP_AUTOPROXY_OPTIONS options = {0};
   options.fAutoLogonIfChallenged = FALSE;
   options.dwFlags = WINHTTP_AUTOPROXY_CONFIG_URL;
-  std::wstring pac_url_wide = base::ASCIIToWide(pac_url_.spec());
-  options.lpszAutoConfigUrl = pac_url_wide.c_str();
+  base::string16 pac_url16 = base::ASCIIToUTF16(pac_url_.spec());
+  options.lpszAutoConfigUrl = pac_url16.c_str();
 
   WINHTTP_PROXY_INFO info = {0};
   DCHECK(session_handle_);
@@ -66,13 +66,13 @@
   // get good performance in the case where WinHTTP uses an out-of-process
   // resolver.  This is important for Vista and Win2k3.
   BOOL ok = WinHttpGetProxyForUrl(session_handle_,
-                                  base::ASCIIToWide(query_url.spec()).c_str(),
+                                  base::ASCIIToUTF16(query_url.spec()).c_str(),
                                   &options, &info);
   if (!ok) {
     if (ERROR_WINHTTP_LOGIN_FAILURE == GetLastError()) {
       options.fAutoLogonIfChallenged = TRUE;
       ok = WinHttpGetProxyForUrl(
-          session_handle_, base::ASCIIToWide(query_url.spec()).c_str(),
+          session_handle_, base::ASCIIToUTF16(query_url.spec()).c_str(),
           &options, &info);
     }
     if (!ok) {
diff --git a/net/quic/congestion_control/rtt_stats.cc b/net/quic/congestion_control/rtt_stats.cc
index 7b25b6c..dfb50ef 100644
--- a/net/quic/congestion_control/rtt_stats.cc
+++ b/net/quic/congestion_control/rtt_stats.cc
@@ -32,10 +32,6 @@
       num_min_rtt_samples_remaining_(0),
       recent_min_rtt_window_(QuicTime::Delta::Infinite()) {}
 
-bool RttStats::HasUpdates() const {
-  return !smoothed_rtt_.IsZero();
-}
-
 void RttStats::SampleNewRecentMinRtt(uint32 num_samples) {
   num_min_rtt_samples_remaining_ = num_samples;
   new_min_rtt_ = RttSample();
@@ -78,7 +74,7 @@
   }
   latest_rtt_ = rtt_sample;
   // First time call.
-  if (!HasUpdates()) {
+  if (smoothed_rtt_.IsZero()) {
     smoothed_rtt_ = rtt_sample;
     mean_deviation_ = QuicTime::Delta::FromMicroseconds(
         rtt_sample.ToMicroseconds() / 2);
@@ -131,18 +127,4 @@
   }
 }
 
-QuicTime::Delta RttStats::SmoothedRtt() const {
-  if (!HasUpdates()) {
-    return QuicTime::Delta::FromMicroseconds(initial_rtt_us_);
-  }
-  return smoothed_rtt_;
-}
-
-QuicTime::Delta RttStats::MinRtt() const {
-  if (!HasUpdates()) {
-    return QuicTime::Delta::FromMicroseconds(initial_rtt_us_);
-  }
-  return min_rtt_;
-}
-
 }  // namespace net
diff --git a/net/quic/congestion_control/rtt_stats.h b/net/quic/congestion_control/rtt_stats.h
index b7ec6b9..9dd5620 100644
--- a/net/quic/congestion_control/rtt_stats.h
+++ b/net/quic/congestion_control/rtt_stats.h
@@ -41,12 +41,11 @@
   // |num_samples| UpdateRtt calls.
   void SampleNewRecentMinRtt(uint32 num_samples);
 
-  QuicTime::Delta SmoothedRtt() const;
-
-  // Returns the min_rtt for the entire connection if a min has been measured.
-  // This returns an initial non-zero RTT estimate if no measurements have yet
-  // been made.
-  QuicTime::Delta MinRtt() const;
+  // Returns the EWMA smoothed RTT for the connection.
+  // May return Zero if no valid updates have occurred.
+  QuicTime::Delta smoothed_rtt() const {
+    return smoothed_rtt_;
+  }
 
   int64 initial_rtt_us() const {
     return initial_rtt_us_;
@@ -57,10 +56,18 @@
     initial_rtt_us_ = initial_rtt_us;
   }
 
+  // The most recent rtt measurement.
+  // May return Zero if no valid updates have occurred.
   QuicTime::Delta latest_rtt() const {
     return latest_rtt_;
   }
 
+  // Returns the min_rtt for the entire connection.
+  // May return Zero if no valid updates have occurred.
+  QuicTime::Delta min_rtt() const {
+    return min_rtt_;
+  }
+
   // Returns the min_rtt since SampleNewRecentMinRtt has been called, or the
   // min_rtt for the entire connection if SampleNewMinRtt was never called.
   QuicTime::Delta recent_min_rtt() const {
diff --git a/net/quic/congestion_control/rtt_stats_test.cc b/net/quic/congestion_control/rtt_stats_test.cc
index d3a683e..6aaf2a6 100644
--- a/net/quic/congestion_control/rtt_stats_test.cc
+++ b/net/quic/congestion_control/rtt_stats_test.cc
@@ -37,10 +37,8 @@
 
 TEST_F(RttStatsTest, DefaultsBeforeUpdate) {
   EXPECT_LT(0u, rtt_stats_.initial_rtt_us());
-  EXPECT_EQ(QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us()),
-            rtt_stats_.MinRtt());
-  EXPECT_EQ(QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us()),
-            rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.min_rtt());
+  EXPECT_EQ(QuicTime::Delta::Zero(), rtt_stats_.smoothed_rtt());
 }
 
 TEST_F(RttStatsTest, SmoothedRtt) {
@@ -49,58 +47,58 @@
                        QuicTime::Delta::FromMilliseconds(100),
                        QuicTime::Zero());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.smoothed_rtt());
   // Verify that effective RTT of zero does not change Smoothed RTT.
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(200),
                        QuicTime::Delta::FromMilliseconds(200),
                        QuicTime::Zero());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.smoothed_rtt());
   // Verify that large erroneous ack_delay does not change Smoothed RTT.
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(200),
                        QuicTime::Delta::FromMilliseconds(300),
                        QuicTime::Zero());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.latest_rtt());
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.smoothed_rtt());
 }
 
 TEST_F(RttStatsTest, MinRtt) {
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(200),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero());
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200),
             rtt_stats_.recent_min_rtt());
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(10),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero().Add(
                            QuicTime::Delta::FromMilliseconds(10)));
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.recent_min_rtt());
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(50),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero().Add(
                            QuicTime::Delta::FromMilliseconds(20)));
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.recent_min_rtt());
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(50),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero().Add(
                            QuicTime::Delta::FromMilliseconds(30)));
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.recent_min_rtt());
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(50),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero().Add(
                            QuicTime::Delta::FromMilliseconds(40)));
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.recent_min_rtt());
   // Verify that ack_delay does not go into recording of min_rtt_.
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(7),
                        QuicTime::Delta::FromMilliseconds(2),
                        QuicTime::Zero().Add(
                            QuicTime::Delta::FromMilliseconds(50)));
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(7), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(7), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(7), rtt_stats_.recent_min_rtt());
 }
 
@@ -108,7 +106,7 @@
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(10),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero());
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.recent_min_rtt());
 
   rtt_stats_.SampleNewRecentMinRtt(4);
@@ -116,14 +114,14 @@
     rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(50),
                        QuicTime::Delta::Zero(),
                        QuicTime::Zero());
-    EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+    EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
     EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10),
               rtt_stats_.recent_min_rtt());
   }
   rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(50),
                         QuicTime::Delta::Zero(),
                         QuicTime::Zero());
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(50), rtt_stats_.recent_min_rtt());
 }
 
@@ -134,7 +132,7 @@
   QuicTime now = QuicTime::Zero();
   QuicTime::Delta rtt_sample = QuicTime::Delta::FromMilliseconds(10);
   rtt_stats_.UpdateRtt(rtt_sample, QuicTime::Delta::Zero(), now);
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.recent_min_rtt());
 
   // Gradually increase the rtt samples and ensure the recent_min_rtt starts
@@ -143,7 +141,7 @@
     now = now.Add(QuicTime::Delta::FromMilliseconds(25));
     rtt_sample = rtt_sample.Add(QuicTime::Delta::FromMilliseconds(10));
     rtt_stats_.UpdateRtt(rtt_sample, QuicTime::Delta::Zero(), now);
-    EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+    EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
     EXPECT_EQ(rtt_sample, RttStatsPeer::GetQuarterWindowRtt(&rtt_stats_));
     EXPECT_EQ(rtt_sample.Subtract(QuicTime::Delta::FromMilliseconds(10)),
               RttStatsPeer::GetHalfWindowRtt(&rtt_stats_));
@@ -165,7 +163,7 @@
   // A new quarter rtt low sets that, but nothing else.
   rtt_sample = rtt_sample.Subtract(QuicTime::Delta::FromMilliseconds(5));
   rtt_stats_.UpdateRtt(rtt_sample, QuicTime::Delta::Zero(), now);
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetQuarterWindowRtt(&rtt_stats_));
   EXPECT_EQ(rtt_sample.Subtract(QuicTime::Delta::FromMilliseconds(5)),
             RttStatsPeer::GetHalfWindowRtt(&rtt_stats_));
@@ -175,7 +173,7 @@
   // A new half rtt low sets that and the quarter rtt low.
   rtt_sample = rtt_sample.Subtract(QuicTime::Delta::FromMilliseconds(15));
   rtt_stats_.UpdateRtt(rtt_sample, QuicTime::Delta::Zero(), now);
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetQuarterWindowRtt(&rtt_stats_));
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetHalfWindowRtt(&rtt_stats_));
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(70),
@@ -184,7 +182,7 @@
   // A new full window loss sets the recent_min_rtt, but not min_rtt.
   rtt_sample = QuicTime::Delta::FromMilliseconds(65);
   rtt_stats_.UpdateRtt(rtt_sample, QuicTime::Delta::Zero(), now);
-  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.MinRtt());
+  EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), rtt_stats_.min_rtt());
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetQuarterWindowRtt(&rtt_stats_));
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetHalfWindowRtt(&rtt_stats_));
   EXPECT_EQ(rtt_sample, rtt_stats_.recent_min_rtt());
@@ -193,7 +191,7 @@
   rtt_sample = QuicTime::Delta::FromMilliseconds(5);
   rtt_stats_.UpdateRtt(rtt_sample, QuicTime::Delta::Zero(), now);
 
-  EXPECT_EQ(rtt_sample, rtt_stats_.MinRtt());
+  EXPECT_EQ(rtt_sample, rtt_stats_.min_rtt());
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetQuarterWindowRtt(&rtt_stats_));
   EXPECT_EQ(rtt_sample, RttStatsPeer::GetHalfWindowRtt(&rtt_stats_));
   EXPECT_EQ(rtt_sample, rtt_stats_.recent_min_rtt());
@@ -202,27 +200,27 @@
 TEST_F(RttStatsTest, ExpireSmoothedMetrics) {
   QuicTime::Delta initial_rtt = QuicTime::Delta::FromMilliseconds(10);
   rtt_stats_.UpdateRtt(initial_rtt, QuicTime::Delta::Zero(), QuicTime::Zero());
-  EXPECT_EQ(initial_rtt, rtt_stats_.MinRtt());
+  EXPECT_EQ(initial_rtt, rtt_stats_.min_rtt());
   EXPECT_EQ(initial_rtt, rtt_stats_.recent_min_rtt());
-  EXPECT_EQ(initial_rtt, rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(initial_rtt, rtt_stats_.smoothed_rtt());
 
   EXPECT_EQ(initial_rtt.Multiply(0.5), rtt_stats_.mean_deviation());
 
   // Update once with a 20ms RTT.
   QuicTime::Delta doubled_rtt = initial_rtt.Multiply(2);
   rtt_stats_.UpdateRtt(doubled_rtt, QuicTime::Delta::Zero(), QuicTime::Zero());
-  EXPECT_EQ(initial_rtt.Multiply(1.125), rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(initial_rtt.Multiply(1.125), rtt_stats_.smoothed_rtt());
 
   // Expire the smoothed metrics, increasing smoothed rtt and mean deviation.
   rtt_stats_.ExpireSmoothedMetrics();
-  EXPECT_EQ(doubled_rtt, rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(doubled_rtt, rtt_stats_.smoothed_rtt());
   EXPECT_EQ(initial_rtt.Multiply(0.875), rtt_stats_.mean_deviation());
 
   // Now go back down to 5ms and expire the smoothed metrics, and ensure the
   // mean deviation increases to 15ms.
   QuicTime::Delta half_rtt = initial_rtt.Multiply(0.5);
   rtt_stats_.UpdateRtt(half_rtt, QuicTime::Delta::Zero(), QuicTime::Zero());
-  EXPECT_GT(doubled_rtt, rtt_stats_.SmoothedRtt());
+  EXPECT_GT(doubled_rtt, rtt_stats_.smoothed_rtt());
   EXPECT_LT(initial_rtt, rtt_stats_.mean_deviation());
 }
 
@@ -232,9 +230,9 @@
 
   QuicTime::Delta initial_rtt = QuicTime::Delta::FromMilliseconds(10);
   rtt_stats_.UpdateRtt(initial_rtt, QuicTime::Delta::Zero(), QuicTime::Zero());
-  EXPECT_EQ(initial_rtt, rtt_stats_.MinRtt());
+  EXPECT_EQ(initial_rtt, rtt_stats_.min_rtt());
   EXPECT_EQ(initial_rtt, rtt_stats_.recent_min_rtt());
-  EXPECT_EQ(initial_rtt, rtt_stats_.SmoothedRtt());
+  EXPECT_EQ(initial_rtt, rtt_stats_.smoothed_rtt());
 
   vector<QuicTime::Delta> bad_send_deltas;
   bad_send_deltas.push_back(QuicTime::Delta::Zero());
@@ -249,9 +247,9 @@
     rtt_stats_.UpdateRtt(bad_send_delta,
                          QuicTime::Delta::Zero(),
                          QuicTime::Zero());
-    EXPECT_EQ(initial_rtt, rtt_stats_.MinRtt());
+    EXPECT_EQ(initial_rtt, rtt_stats_.min_rtt());
     EXPECT_EQ(initial_rtt, rtt_stats_.recent_min_rtt());
-    EXPECT_EQ(initial_rtt, rtt_stats_.SmoothedRtt());
+    EXPECT_EQ(initial_rtt, rtt_stats_.smoothed_rtt());
   }
 }
 
diff --git a/net/quic/congestion_control/tcp_cubic_sender.cc b/net/quic/congestion_control/tcp_cubic_sender.cc
index 44e4b3e..5f20597 100644
--- a/net/quic/congestion_control/tcp_cubic_sender.cc
+++ b/net/quic/congestion_control/tcp_cubic_sender.cc
@@ -22,7 +22,6 @@
 // fast retransmission.  The cwnd after a timeout is still 1.
 const QuicPacketCount kMinimumCongestionWindow = 2;
 const QuicByteCount kMaxSegmentSize = kDefaultTCPMSS;
-const int64 kInitialCongestionWindow = 10;
 const int kMaxBurstLength = 3;
 const float kRenoBeta = 0.7f;  // Reno backoff factor.
 const uint32 kDefaultNumConnections = 2;  // N-connection emulation.
@@ -44,7 +43,7 @@
       largest_sent_sequence_number_(0),
       largest_acked_sequence_number_(0),
       largest_sent_at_last_cutback_(0),
-      congestion_window_(kInitialCongestionWindow),
+      congestion_window_(kDefaultInitialWindow),
       previous_congestion_window_(0),
       slowstart_threshold_(max_tcp_congestion_window),
       previous_slowstart_threshold_(0),
@@ -63,11 +62,13 @@
       // Initial window experiment.  Ignore the initial congestion
       // window suggested by the client and use the default ICWND of
       // 10 instead.
-      congestion_window_ = kInitialCongestionWindow;
+      congestion_window_ = kDefaultInitialWindow;
     } else if (config.HasReceivedInitialCongestionWindow()) {
       // Set the initial window size.
-      congestion_window_ = min(kMaxInitialWindow,
-                               config.ReceivedInitialCongestionWindow());
+      congestion_window_ = max(kMinimumCongestionWindow,
+          min(kMaxInitialWindow,
+              static_cast<QuicPacketCount>(
+                  config.ReceivedInitialCongestionWindow())));
     }
   }
 }
@@ -92,7 +93,7 @@
     const CongestionVector& lost_packets) {
   if (rtt_updated && InSlowStart() &&
       hybrid_slow_start_.ShouldExitSlowStart(rtt_stats_->latest_rtt(),
-                                             rtt_stats_->MinRtt(),
+                                             rtt_stats_->min_rtt(),
                                              congestion_window_)) {
     slowstart_threshold_ = congestion_window_;
   }
@@ -203,27 +204,34 @@
   // We pace at twice the rate of the underlying sender's bandwidth estimate
   // during slow start and 1.25x during congestion avoidance to ensure pacing
   // doesn't prevent us from filling the window.
-  return BandwidthEstimate().Scale(InSlowStart() ? 2 : 1.25);
+  QuicTime::Delta srtt = rtt_stats_->smoothed_rtt();
+  if (srtt.IsZero()) {
+    srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_->initial_rtt_us());
+  }
+  const QuicBandwidth bandwidth =
+      QuicBandwidth::FromBytesAndTimeDelta(GetCongestionWindow(), srtt);
+  return bandwidth.Scale(InSlowStart() ? 2 : 1.25);
 }
 
 QuicBandwidth TcpCubicSender::BandwidthEstimate() const {
-  if (rtt_stats_->SmoothedRtt().IsZero()) {
-    LOG(DFATAL) << "In BandwidthEstimate(), smoothed RTT is zero!";
+  QuicTime::Delta srtt = rtt_stats_->smoothed_rtt();
+  if (srtt.IsZero()) {
+    // If we haven't measured an rtt, the bandwidth estimate is unknown.
     return QuicBandwidth::Zero();
   }
-  return QuicBandwidth::FromBytesAndTimeDelta(GetCongestionWindow(),
-                                              rtt_stats_->SmoothedRtt());
+  return QuicBandwidth::FromBytesAndTimeDelta(GetCongestionWindow(), srtt);
 }
 
 bool TcpCubicSender::HasReliableBandwidthEstimate() const {
-  return !InSlowStart() && !InRecovery();
+  return !InSlowStart() && !InRecovery() &&
+      !rtt_stats_->smoothed_rtt().IsZero();;
 }
 
 QuicTime::Delta TcpCubicSender::RetransmissionDelay() const {
-  if (!rtt_stats_->HasUpdates()) {
+  if (rtt_stats_->smoothed_rtt().IsZero()) {
     return QuicTime::Delta::Zero();
   }
-  return rtt_stats_->SmoothedRtt().Add(
+  return rtt_stats_->smoothed_rtt().Add(
       rtt_stats_->mean_deviation().Multiply(4));
 }
 
@@ -299,7 +307,7 @@
   } else {
     congestion_window_ = min(max_tcp_congestion_window_,
                              cubic_.CongestionWindowAfterAck(
-                                 congestion_window_, rtt_stats_->MinRtt()));
+                                 congestion_window_, rtt_stats_->min_rtt()));
     DVLOG(1) << "Cubic; congestion window: " << congestion_window_
              << " slowstart threshold: " << slowstart_threshold_;
   }
diff --git a/net/quic/congestion_control/tcp_cubic_sender_test.cc b/net/quic/congestion_control/tcp_cubic_sender_test.cc
index 4fe8dbf..48a1300 100644
--- a/net/quic/congestion_control/tcp_cubic_sender_test.cc
+++ b/net/quic/congestion_control/tcp_cubic_sender_test.cc
@@ -21,8 +21,7 @@
 namespace net {
 namespace test {
 
-const int64 kInitialCongestionWindow = 10;
-const uint32 kDefaultWindowTCP = kInitialCongestionWindow * kDefaultTCPMSS;
+const uint32 kDefaultWindowTCP = kDefaultInitialWindow * kDefaultTCPMSS;
 const float kRenoBeta = 0.7f;  // Reno backoff factor.
 
 // TODO(ianswett): Remove 10000 once b/10075719 is fixed.
@@ -188,6 +187,8 @@
   EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(),
       0,
       HAS_RETRANSMITTABLE_DATA).IsZero());
+  EXPECT_FALSE(sender_->HasReliableBandwidthEstimate());
+  EXPECT_EQ(QuicBandwidth::Zero(), sender_->BandwidthEstimate());
   // Make sure we can send.
   EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(),
                                      0,
@@ -198,9 +199,12 @@
     SendAvailableSendWindow();
     AckNPackets(2);
   }
-  QuicByteCount bytes_to_send = sender_->GetCongestionWindow();
-  EXPECT_EQ(kDefaultWindowTCP + kDefaultTCPMSS * 2 * kNumberOfAcks,
-            bytes_to_send);
+  const QuicByteCount cwnd = sender_->GetCongestionWindow();
+  EXPECT_EQ(kDefaultWindowTCP + kDefaultTCPMSS * 2 * kNumberOfAcks, cwnd);
+  EXPECT_FALSE(sender_->HasReliableBandwidthEstimate());
+  EXPECT_EQ(QuicBandwidth::FromBytesAndTimeDelta(
+                cwnd, sender_->rtt_stats_.smoothed_rtt()),
+            sender_->BandwidthEstimate());
 }
 
 TEST_F(TcpCubicSenderTest, SlowStartAckTrain) {
@@ -301,7 +305,7 @@
 
 TEST_F(TcpCubicSenderTest, NoPRRWhenLessThanOnePacketInFlight) {
   SendAvailableSendWindow();
-  LoseNPackets(kInitialCongestionWindow - 1);
+  LoseNPackets(kDefaultInitialWindow - 1);
   AckNPackets(1);
   // PRR will allow 2 packets for every ack during recovery.
   EXPECT_EQ(2, SendAvailableSendWindow());
@@ -469,13 +473,13 @@
   }
   expected_delay = QuicTime::Delta::FromMilliseconds(kRttMs + kDeviationMs * 4);
 
-  EXPECT_NEAR(kRttMs, sender_->rtt_stats_.SmoothedRtt().ToMilliseconds(), 1);
+  EXPECT_NEAR(kRttMs, sender_->rtt_stats_.smoothed_rtt().ToMilliseconds(), 1);
   EXPECT_NEAR(expected_delay.ToMilliseconds(),
               sender_->RetransmissionDelay().ToMilliseconds(),
               1);
   EXPECT_EQ(static_cast<int64>(
                 sender_->GetCongestionWindow() * kNumMicrosPerSecond /
-                sender_->rtt_stats_.SmoothedRtt().ToMicroseconds()),
+                sender_->rtt_stats_.smoothed_rtt().ToMicroseconds()),
             sender_->BandwidthEstimate().ToBytesPerSecond());
 }
 
diff --git a/net/quic/congestion_control/tcp_loss_algorithm.cc b/net/quic/congestion_control/tcp_loss_algorithm.cc
index e609122..6cf56d8 100644
--- a/net/quic/congestion_control/tcp_loss_algorithm.cc
+++ b/net/quic/congestion_control/tcp_loss_algorithm.cc
@@ -31,7 +31,7 @@
   SequenceNumberSet lost_packets;
   loss_detection_timeout_ = QuicTime::Zero();
   QuicTime::Delta loss_delay =
-      rtt_stats.SmoothedRtt().Multiply(kEarlyRetransmitLossDelayMultiplier);
+      rtt_stats.smoothed_rtt().Multiply(kEarlyRetransmitLossDelayMultiplier);
   QuicPacketSequenceNumber sequence_number = unacked_packets.GetLeastUnacked();
   for (QuicUnackedPacketMap::const_iterator it = unacked_packets.begin();
        it != unacked_packets.end() && sequence_number <= largest_observed;
diff --git a/net/quic/congestion_control/tcp_loss_algorithm_test.cc b/net/quic/congestion_control/tcp_loss_algorithm_test.cc
index 34bcc16..5819fb1 100644
--- a/net/quic/congestion_control/tcp_loss_algorithm_test.cc
+++ b/net/quic/congestion_control/tcp_loss_algorithm_test.cc
@@ -118,7 +118,7 @@
   unacked_packets_.RemoveFromInFlight(2);
   unacked_packets_.NackPacket(1, 1);
   VerifyLosses(2, nullptr, 0);
-  EXPECT_EQ(clock_.Now().Add(rtt_stats_.SmoothedRtt().Multiply(1.25)),
+  EXPECT_EQ(clock_.Now().Add(rtt_stats_.smoothed_rtt().Multiply(1.25)),
             loss_algorithm_.GetLossTimeout());
 
   clock_.AdvanceTime(rtt_stats_.latest_rtt().Multiply(1.25));
@@ -133,7 +133,7 @@
     SendDataPacket(i);
     // Advance the time 1/4 RTT between 3 and 4.
     if (i == 3) {
-      clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.25));
+      clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.25));
     }
   }
 
@@ -148,15 +148,15 @@
   VerifyLosses(kNumSentPackets, lost, arraysize(lost));
   // The time has already advanced 1/4 an RTT, so ensure the timeout is set
   // 1.25 RTTs after the earliest pending packet(3), not the last(4).
-  EXPECT_EQ(clock_.Now().Add(rtt_stats_.SmoothedRtt()),
+  EXPECT_EQ(clock_.Now().Add(rtt_stats_.smoothed_rtt()),
             loss_algorithm_.GetLossTimeout());
 
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt());
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt());
   QuicPacketSequenceNumber lost2[] = { 1, 2, 3 };
   VerifyLosses(kNumSentPackets, lost2, arraysize(lost2));
-  EXPECT_EQ(clock_.Now().Add(rtt_stats_.SmoothedRtt().Multiply(0.25)),
+  EXPECT_EQ(clock_.Now().Add(rtt_stats_.smoothed_rtt().Multiply(0.25)),
             loss_algorithm_.GetLossTimeout());
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.25));
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.25));
   QuicPacketSequenceNumber lost3[] = { 1, 2, 3, 4 };
   VerifyLosses(kNumSentPackets, lost3, arraysize(lost3));
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
diff --git a/net/quic/congestion_control/time_loss_algorithm.cc b/net/quic/congestion_control/time_loss_algorithm.cc
index 3a7b42d..9dd9ae9 100644
--- a/net/quic/congestion_control/time_loss_algorithm.cc
+++ b/net/quic/congestion_control/time_loss_algorithm.cc
@@ -36,7 +36,7 @@
   loss_detection_timeout_ = QuicTime::Zero();
   QuicTime::Delta loss_delay = QuicTime::Delta::Max(
       QuicTime::Delta::FromMilliseconds(kMinLossDelayMs),
-      QuicTime::Delta::Max(rtt_stats.SmoothedRtt(), rtt_stats.latest_rtt())
+      QuicTime::Delta::Max(rtt_stats.smoothed_rtt(), rtt_stats.latest_rtt())
           .Multiply(kLossDelayMultiplier));
 
   QuicPacketSequenceNumber sequence_number = unacked_packets.GetLeastUnacked();
diff --git a/net/quic/congestion_control/time_loss_algorithm_test.cc b/net/quic/congestion_control/time_loss_algorithm_test.cc
index 374e563..b964d28 100644
--- a/net/quic/congestion_control/time_loss_algorithm_test.cc
+++ b/net/quic/congestion_control/time_loss_algorithm_test.cc
@@ -60,7 +60,7 @@
     unacked_packets_.NackPacket(1, i);
     VerifyLosses(2, nullptr, 0);
   }
-  EXPECT_EQ(rtt_stats_.SmoothedRtt().Multiply(1.25),
+  EXPECT_EQ(rtt_stats_.smoothed_rtt().Multiply(1.25),
             loss_algorithm_.GetLossTimeout().Subtract(clock_.Now()));
 }
 
@@ -69,7 +69,7 @@
   // Transmit 10 packets at 1/10th an RTT interval.
   for (size_t i = 1; i <= kNumSentPackets; ++i) {
     SendDataPacket(i);
-    clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.1));
+    clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.1));
   }
   // Expect the timer to not be set.
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
@@ -78,11 +78,11 @@
   unacked_packets_.RemoveFromInFlight(2);
   VerifyLosses(2, nullptr, 0);
   // Expect the timer to be set to 0.25 RTT's in the future.
-  EXPECT_EQ(rtt_stats_.SmoothedRtt().Multiply(0.25),
+  EXPECT_EQ(rtt_stats_.smoothed_rtt().Multiply(0.25),
             loss_algorithm_.GetLossTimeout().Subtract(clock_.Now()));
   unacked_packets_.NackPacket(1, 5);
   VerifyLosses(2, nullptr, 0);
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.25));
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.25));
   QuicPacketSequenceNumber lost[] = { 1 };
   VerifyLosses(2, lost, arraysize(lost));
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
@@ -93,7 +93,7 @@
   // Transmit 10 packets at 1/10th an RTT interval.
   for (size_t i = 1; i <= kNumSentPackets; ++i) {
     SendDataPacket(i);
-    clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.1));
+    clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.1));
   }
   // Expect the timer to not be set.
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
@@ -102,9 +102,9 @@
   VerifyLosses(1, nullptr, 0);
   // The timer should still not be set.
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.25));
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.25));
   VerifyLosses(1, nullptr, 0);
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt());
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt());
   VerifyLosses(1, nullptr, 0);
 
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
@@ -116,7 +116,7 @@
   for (size_t i = 1; i <= kNumSentPackets; ++i) {
     SendDataPacket(i);
   }
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt());
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt());
   // Expect the timer to not be set.
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
   // The packet should not be lost until 1.25 RTTs pass.
@@ -126,9 +126,9 @@
   unacked_packets_.RemoveFromInFlight(10);
   VerifyLosses(10, nullptr, 0);
   // Expect the timer to be set to 0.25 RTT's in the future.
-  EXPECT_EQ(rtt_stats_.SmoothedRtt().Multiply(0.25),
+  EXPECT_EQ(rtt_stats_.smoothed_rtt().Multiply(0.25),
             loss_algorithm_.GetLossTimeout().Subtract(clock_.Now()));
-  clock_.AdvanceTime(rtt_stats_.SmoothedRtt().Multiply(0.25));
+  clock_.AdvanceTime(rtt_stats_.smoothed_rtt().Multiply(0.25));
   QuicPacketSequenceNumber lost[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
   VerifyLosses(10, lost, arraysize(lost));
   EXPECT_EQ(QuicTime::Zero(), loss_algorithm_.GetLossTimeout());
diff --git a/net/quic/crypto/quic_crypto_server_config.cc b/net/quic/crypto/quic_crypto_server_config.cc
index a5c5d08..5a650b6 100644
--- a/net/quic/crypto/quic_crypto_server_config.cc
+++ b/net/quic/crypto/quic_crypto_server_config.cc
@@ -1420,6 +1420,10 @@
       rand, source_address_token.SerializeAsString());
 }
 
+bool QuicCryptoServerConfig::HasProofSource() const {
+  return proof_source_ != nullptr;
+}
+
 HandshakeFailureReason QuicCryptoServerConfig::ValidateSourceAddressToken(
     const Config& config,
     StringPiece token,
diff --git a/net/quic/crypto/quic_crypto_server_config.h b/net/quic/crypto/quic_crypto_server_config.h
index 30e0f6d..dbbff1a 100644
--- a/net/quic/crypto/quic_crypto_server_config.h
+++ b/net/quic/crypto/quic_crypto_server_config.h
@@ -326,6 +326,9 @@
   // Set and take ownership of the callback to invoke on primary config changes.
   void AcquirePrimaryConfigChangedCb(PrimaryConfigChangedCallback* cb);
 
+  // Returns true if this config has a |proof_source_|.
+  bool HasProofSource() const;
+
  private:
   friend class test::QuicCryptoServerConfigPeer;
 
diff --git a/net/quic/quic_client_session.cc b/net/quic/quic_client_session.cc
index a12b1d0..7c220ad 100644
--- a/net/quic/quic_client_session.cc
+++ b/net/quic/quic_client_session.cc
@@ -155,9 +155,10 @@
     TransportSecurityState* transport_security_state,
     scoped_ptr<QuicServerInfo> server_info,
     const QuicConfig& config,
+    bool is_secure,
     base::TaskRunner* task_runner,
     NetLog* net_log)
-    : QuicClientSessionBase(connection, config),
+    : QuicClientSessionBase(connection, config, is_secure),
       require_confirmation_(false),
       stream_factory_(stream_factory),
       socket_(socket.Pass()),
diff --git a/net/quic/quic_client_session.h b/net/quic/quic_client_session.h
index b1a35d9..6c33eb5 100644
--- a/net/quic/quic_client_session.h
+++ b/net/quic/quic_client_session.h
@@ -96,6 +96,7 @@
                     TransportSecurityState* transport_security_state,
                     scoped_ptr<QuicServerInfo> server_info,
                     const QuicConfig& config,
+                    bool is_secure,
                     base::TaskRunner* task_runner,
                     NetLog* net_log);
   ~QuicClientSession() override;
diff --git a/net/quic/quic_client_session_base.cc b/net/quic/quic_client_session_base.cc
index 40d4b86..5b5902b 100644
--- a/net/quic/quic_client_session_base.cc
+++ b/net/quic/quic_client_session_base.cc
@@ -10,8 +10,9 @@
 
 QuicClientSessionBase::QuicClientSessionBase(
     QuicConnection* connection,
-    const QuicConfig& config)
-    : QuicSession(connection, config) {}
+    const QuicConfig& config,
+    bool is_secure)
+    : QuicSession(connection, config, is_secure) {}
 
 QuicClientSessionBase::~QuicClientSessionBase() {}
 
diff --git a/net/quic/quic_client_session_base.h b/net/quic/quic_client_session_base.h
index d72996c..a7f64fb 100644
--- a/net/quic/quic_client_session_base.h
+++ b/net/quic/quic_client_session_base.h
@@ -14,7 +14,8 @@
 class NET_EXPORT_PRIVATE QuicClientSessionBase : public QuicSession {
  public:
   QuicClientSessionBase(QuicConnection* connection,
-                        const QuicConfig& config);
+                        const QuicConfig& config,
+                        bool is_secure);
 
   ~QuicClientSessionBase() override;
 
diff --git a/net/quic/quic_client_session_test.cc b/net/quic/quic_client_session_test.cc
index cae2220..8860f2e 100644
--- a/net/quic/quic_client_session_test.cc
+++ b/net/quic/quic_client_session_test.cc
@@ -46,11 +46,13 @@
         session_(connection_, GetSocket().Pass(), nullptr,
                  &transport_security_state_,
                  make_scoped_ptr((QuicServerInfo*)nullptr), DefaultQuicConfig(),
+                 /*is_secure=*/false,
                  base::MessageLoop::current()->message_loop_proxy().get(),
                  &net_log_) {
-    session_.InitializeSession(QuicServerId(kServerHostname, kServerPort, false,
+    session_.InitializeSession(QuicServerId(kServerHostname, kServerPort,
+                                            /*is_secure=*/false,
                                             PRIVACY_MODE_DISABLED),
-                                &crypto_config_, nullptr);
+        &crypto_config_, nullptr);
   }
 
   void TearDown() override { session_.CloseSessionOnError(ERR_ABORTED); }
diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
index 21ea41a..6308d88 100644
--- a/net/quic/quic_connection.cc
+++ b/net/quic/quic_connection.cc
@@ -1139,13 +1139,11 @@
 const QuicConnectionStats& QuicConnection::GetStats() {
   // Update rtt and estimated bandwidth.
   stats_.min_rtt_us =
-      sent_packet_manager_.GetRttStats()->MinRtt().ToMicroseconds();
+      sent_packet_manager_.GetRttStats()->min_rtt().ToMicroseconds();
   stats_.srtt_us =
-      sent_packet_manager_.GetRttStats()->SmoothedRtt().ToMicroseconds();
+      sent_packet_manager_.GetRttStats()->smoothed_rtt().ToMicroseconds();
   stats_.estimated_bandwidth =
       sent_packet_manager_.BandwidthEstimate().ToBytesPerSecond();
-  stats_.congestion_window = sent_packet_manager_.GetCongestionWindow();
-  stats_.slow_start_threshold = sent_packet_manager_.GetSlowStartThreshold();
   stats_.max_packet_size = packet_generator_.max_packet_length();
   return stats_;
 }
@@ -1276,7 +1274,7 @@
 
   if (is_server_ && encryption_level_ == ENCRYPTION_NONE &&
       last_size_ > packet_generator_.max_packet_length()) {
-    packet_generator_.set_max_packet_length(last_size_);
+    set_max_packet_length(last_size_);
   }
   return true;
 }
@@ -1496,7 +1494,7 @@
   // perhaps via the NetworkChangeVisitor.
   packet_generator_.UpdateSequenceNumberLength(
       sent_packet_manager_.least_packet_awaited_by_peer(),
-      sent_packet_manager_.GetCongestionWindow());
+      sent_packet_manager_.EstimateMaxPacketsInFlight(max_packet_length()));
 
   bool reset_retransmission_alarm = sent_packet_manager_.OnPacketSent(
       &packet->serialized_packet,
@@ -1586,7 +1584,7 @@
 
 void QuicConnection::OnCongestionWindowChange() {
   packet_generator_.OnCongestionWindowChange(
-      sent_packet_manager_.GetCongestionWindow());
+      sent_packet_manager_.EstimateMaxPacketsInFlight(max_packet_length()));
   visitor_->OnCongestionWindowChange(clock_->ApproximateNow());
 }
 
@@ -1686,7 +1684,8 @@
         // 3 times the current congestion window (in slow start) should cover
         // about two full round trips worth of packets, which should be
         // sufficient.
-        3 * sent_packet_manager_.GetCongestionWindow() / max_packet_length();
+        3 * sent_packet_manager_.EstimateMaxPacketsInFlight(
+            max_packet_length());
   }
 }
 
@@ -1940,11 +1939,7 @@
 
   if (timeout < idle_network_timeout_) {
     idle_network_timeout_ = timeout;
-    if (FLAGS_quic_timeouts_only_from_alarms) {
-      SetTimeoutAlarm();
-    } else {
-      CheckForTimeout();
-    }
+    SetTimeoutAlarm();
   } else {
     idle_network_timeout_ = timeout;
   }
@@ -1953,11 +1948,7 @@
 void QuicConnection::SetOverallConnectionTimeout(QuicTime::Delta timeout) {
   if (timeout < overall_connection_timeout_) {
     overall_connection_timeout_ = timeout;
-    if (FLAGS_quic_timeouts_only_from_alarms) {
-      SetTimeoutAlarm();
-    } else {
-      CheckForTimeout();
-    }
+    SetTimeoutAlarm();
   } else {
     overall_connection_timeout_ = timeout;
   }
diff --git a/net/quic/quic_connection.h b/net/quic/quic_connection.h
index 7a9e55d..f9f8733 100644
--- a/net/quic/quic_connection.h
+++ b/net/quic/quic_connection.h
@@ -431,14 +431,11 @@
   void SetIdleNetworkTimeout(QuicTime::Delta timeout);
 
   // Sets (or resets) the total time delta the connection can be alive for.
-  // Also, checks and times out the connection if timer has expired for
-  // |timeout|. Used to limit the time a connection can be alive before crypto
-  // handshake finishes.
+  // Used to limit the time a connection can be alive before crypto handshake
+  // finishes.
   void SetOverallConnectionTimeout(QuicTime::Delta timeout);
 
   // Sets the overall and idle state connection timeouts.
-  // Times out the connection if the timeout has been reached and
-  // the quic_timeouts_only_from_alarms flag is false.
   void SetNetworkTimeouts(QuicTime::Delta overall_timeout,
                           QuicTime::Delta idle_timeout);
 
diff --git a/net/quic/quic_connection_stats.cc b/net/quic/quic_connection_stats.cc
index 7081d0d..6625c61 100644
--- a/net/quic/quic_connection_stats.cc
+++ b/net/quic/quic_connection_stats.cc
@@ -34,8 +34,6 @@
       srtt_us(0),
       max_packet_size(0),
       estimated_bandwidth(0),
-      congestion_window(0),
-      slow_start_threshold(0),
       packets_reordered(0),
       max_sequence_reordering(0),
       max_time_reordering_us(0),
@@ -73,8 +71,6 @@
      << ", srtt(us): " << s.srtt_us
      << ", max packet size: " << s.max_packet_size
      << ", estimated bandwidth: " << s.estimated_bandwidth
-     << ", congestion window: " << s.congestion_window
-     << ", slow start threshold: " << s.slow_start_threshold
      << ", tcp_loss_events: " << s.tcp_loss_events
      << ", packets reordered: " << s.packets_reordered
      << ", max sequence reordering: " << s.max_sequence_reordering
diff --git a/net/quic/quic_connection_stats.h b/net/quic/quic_connection_stats.h
index c681dea..2abdb59 100644
--- a/net/quic/quic_connection_stats.h
+++ b/net/quic/quic_connection_stats.h
@@ -55,8 +55,6 @@
   int64 srtt_us;  // Smoothed RTT in microseconds.
   uint32 max_packet_size;  // In bytes.
   uint64 estimated_bandwidth;  // In bytes per second.
-  uint32 congestion_window;  // In bytes
-  uint32 slow_start_threshold;  // In bytes
 
   // Reordering stats for received packets.
   // Number of packets received out of sequence number order.
diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc
index b230fd5..66cb89c 100644
--- a/net/quic/quic_connection_test.cc
+++ b/net/quic/quic_connection_test.cc
@@ -3676,10 +3676,6 @@
   EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillOnce(
       Return(QuicBandwidth::Zero()));
 
-  const uint32 kSlowStartThreshold = 23u;
-  EXPECT_CALL(*send_algorithm_, GetSlowStartThreshold()).WillOnce(
-      Return(kSlowStartThreshold));
-
   const QuicConnectionStats& stats = connection_.GetStats();
   EXPECT_EQ(3 * first_packet_size + 2 * second_packet_size - kQuicVersionSize,
             stats.bytes_sent);
@@ -3688,8 +3684,6 @@
             stats.bytes_retransmitted);
   EXPECT_EQ(3u, stats.packets_retransmitted);
   EXPECT_EQ(1u, stats.rto_count);
-  EXPECT_EQ(kMaxPacketSize, stats.congestion_window);
-  EXPECT_EQ(kSlowStartThreshold, stats.slow_start_threshold);
   EXPECT_EQ(kDefaultMaxPacketSize, stats.max_packet_size);
 }
 
@@ -3705,9 +3699,6 @@
 
   EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillOnce(
       Return(QuicBandwidth::Zero()));
-  const uint32 kSlowStartThreshold = 23u;
-  EXPECT_CALL(*send_algorithm_, GetSlowStartThreshold()).WillOnce(
-      Return(kSlowStartThreshold));
 
   const QuicConnectionStats& stats = connection_.GetStats();
   EXPECT_EQ(received_bytes, stats.bytes_received);
@@ -3715,8 +3706,6 @@
 
   EXPECT_EQ(1u, stats.packets_revived);
   EXPECT_EQ(1u, stats.packets_dropped);
-
-  EXPECT_EQ(kSlowStartThreshold, stats.slow_start_threshold);
 }
 
 TEST_P(QuicConnectionTest, TestFecGroupLimits) {
diff --git a/net/quic/quic_dispatcher.cc b/net/quic/quic_dispatcher.cc
index cbdd540..aede7c2 100644
--- a/net/quic/quic_dispatcher.cc
+++ b/net/quic/quic_dispatcher.cc
@@ -352,7 +352,8 @@
   QuicServerSession* session = new QuicServerSession(
       config_,
       CreateQuicConnection(connection_id, server_address, client_address),
-      this);
+      this,
+      crypto_config_.HasProofSource());
   session->InitializeSession(crypto_config_);
   return session;
 }
diff --git a/net/quic/quic_flags.cc b/net/quic/quic_flags.cc
index 682e06e..8d6dd86 100644
--- a/net/quic/quic_flags.cc
+++ b/net/quic/quic_flags.cc
@@ -36,10 +36,6 @@
 // limit.
 bool FLAGS_quic_allow_more_open_streams = false;
 
-// If true, then QUIC connections will only timeout when an alarm fires, never
-// when setting a timeout.
-bool FLAGS_quic_timeouts_only_from_alarms = true;
-
 // If true, then QUIC connections will set both idle and overall timeouts in a
 // single method.
 bool FLAGS_quic_unified_timeouts = true;
diff --git a/net/quic/quic_flags.h b/net/quic/quic_flags.h
index 271b02e..d49f47a 100644
--- a/net/quic/quic_flags.h
+++ b/net/quic/quic_flags.h
@@ -15,7 +15,6 @@
 NET_EXPORT_PRIVATE extern bool FLAGS_enable_quic_fec;
 NET_EXPORT_PRIVATE extern bool FLAGS_quic_use_bbr_congestion_control;
 NET_EXPORT_PRIVATE extern bool FLAGS_quic_allow_more_open_streams;
-NET_EXPORT_PRIVATE extern bool FLAGS_quic_timeouts_only_from_alarms;
 NET_EXPORT_PRIVATE extern bool FLAGS_quic_unified_timeouts;
 NET_EXPORT_PRIVATE extern bool FLAGS_quic_drop_junk_packets;
 NET_EXPORT_PRIVATE extern bool FLAGS_quic_allow_bbr;
diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc
index 53be4dd..db97aac 100644
--- a/net/quic/quic_http_stream_test.cc
+++ b/net/quic/quic_http_stream_test.cc
@@ -232,11 +232,13 @@
                               &transport_security_state_,
                               make_scoped_ptr((QuicServerInfo*)nullptr),
                               DefaultQuicConfig(),
+                              /*is_secure=*/false,
                               base::MessageLoop::current()->
                                   message_loop_proxy().get(),
                               nullptr));
     session_->InitializeSession(QuicServerId(kServerHostname, kServerPort,
-                                             false, PRIVACY_MODE_DISABLED),
+                                             /*is_secure=*/false,
+                                             PRIVACY_MODE_DISABLED),
                                 &crypto_config_,
                                 &crypto_client_stream_factory_);
     session_->GetCryptoStream()->CryptoConnect();
@@ -285,7 +287,7 @@
       QuicPacketSequenceNumber sequence_number) {
     return maker_.MakeRstPacket(
         sequence_number, true, stream_id_,
-        AdjustErrorForVersion(QUIC_RST_FLOW_CONTROL_ACCOUNTING, GetParam()));
+        AdjustErrorForVersion(QUIC_RST_ACKNOWLEDGEMENT, GetParam()));
   }
 
   scoped_ptr<QuicEncryptedPacket> ConstructAckAndRstStreamPacket(
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index ab698f3..62fe895 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -286,7 +286,7 @@
     const AlternateProtocolInfo alternate =
         session_->http_server_properties()->GetAlternateProtocol(
             HostPortPair::FromURL(request_.url));
-    EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
+    EXPECT_TRUE(alternate.is_broken);
   }
 
   void ExpectQuicAlternateProtocolMapping() {
diff --git a/net/quic/quic_packet_creator.cc b/net/quic/quic_packet_creator.cc
index c1700c0..866f05f 100644
--- a/net/quic/quic_packet_creator.cc
+++ b/net/quic/quic_packet_creator.cc
@@ -187,16 +187,14 @@
 
 void QuicPacketCreator::UpdateSequenceNumberLength(
       QuicPacketSequenceNumber least_packet_awaited_by_peer,
-      QuicByteCount congestion_window) {
+      QuicPacketCount max_packets_in_flight) {
   DCHECK_LE(least_packet_awaited_by_peer, sequence_number_ + 1);
   // Since the packet creator will not change sequence number length mid FEC
   // group, include the size of an FEC group to be safe.
   const QuicPacketSequenceNumber current_delta =
       max_packets_per_fec_group_ + sequence_number_ + 1
       - least_packet_awaited_by_peer;
-  const uint64 congestion_window_packets =
-      congestion_window / max_packet_length_;
-  const uint64 delta = max(current_delta, congestion_window_packets);
+  const uint64 delta = max(current_delta, max_packets_in_flight);
   next_sequence_number_length_ =
       QuicFramer::GetMinSequenceNumberLength(delta * 4);
 }
@@ -505,16 +503,31 @@
 }
 
 void QuicPacketCreator::MaybeAddPadding() {
-  if (queued_retransmittable_frames_.get() == nullptr) {
-    return;
-  }
-  if (!queued_retransmittable_frames_->HasCryptoHandshake()) {
-    return;
-  }
   if (BytesFree() == 0) {
     // Don't pad full packets.
     return;
   }
+
+  // Since ReserializeAllFrames does not populate queued_retransmittable_frames_
+  // it's not sufficient to simply call
+  // queued_retransmittable_frames_->HasCryptoHandshake().
+  // TODO(rch): we should really make ReserializeAllFrames not be a special
+  // case!
+
+  // If any of the frames in the current packet are on the crypto stream
+  // then they contain handshake messagses, and we should pad them.
+  bool is_handshake = false;
+  for (const QuicFrame& frame : queued_frames_) {
+    if (frame.type == STREAM_FRAME &&
+        frame.stream_frame->stream_id == kCryptoStreamId) {
+      is_handshake = true;
+      break;
+    }
+  }
+  if (!is_handshake) {
+    return;
+  }
+
   QuicPaddingFrame padding;
   bool success = AddFrame(QuicFrame(&padding), false);
   DCHECK(success);
diff --git a/net/quic/quic_packet_creator.h b/net/quic/quic_packet_creator.h
index 1ca8b09..287cde1 100644
--- a/net/quic/quic_packet_creator.h
+++ b/net/quic/quic_packet_creator.h
@@ -65,7 +65,7 @@
   // can be safely changed.
   void UpdateSequenceNumberLength(
       QuicPacketSequenceNumber least_packet_awaited_by_peer,
-      QuicByteCount congestion_window);
+      QuicPacketCount max_packets_in_flight);
 
   // The overhead the framing will add for a packet with one frame.
   static size_t StreamFramePacketOverhead(
diff --git a/net/quic/quic_packet_creator_test.cc b/net/quic/quic_packet_creator_test.cc
index 08acdc7..4e03e3a 100644
--- a/net/quic/quic_packet_creator_test.cc
+++ b/net/quic/quic_packet_creator_test.cc
@@ -466,6 +466,52 @@
   delete serialized.packet;
 }
 
+TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) {
+  scoped_ptr<QuicStreamFrame> stream_frame(
+      new QuicStreamFrame(kCryptoStreamId, /*fin=*/ false, /*offset=*/ 0,
+                          MakeIOVector("fake handshake message data")));
+  frames_.push_back(QuicFrame(stream_frame.get()));
+  SerializedPacket serialized =
+      creator_.ReserializeAllFrames(frames_,
+                                    creator_.next_sequence_number_length());
+
+  EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize),
+            serialized.packet->length());
+  delete serialized.packet;
+}
+
+TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) {
+  const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP)
+      + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
+  size_t capacity = kDefaultMaxPacketSize - overhead;
+  for (int delta = -5; delta <= 0; ++delta) {
+    string data(capacity + delta, 'A');
+    size_t bytes_free = 0 - delta;
+
+    scoped_ptr<QuicStreamFrame> stream_frame(
+        new QuicStreamFrame(kCryptoStreamId, /*fin=*/ false, kOffset,
+                            MakeIOVector(data)));
+    frames_.push_back(QuicFrame(stream_frame.get()));
+    SerializedPacket serialized =
+        creator_.ReserializeAllFrames(frames_,
+                                      creator_.next_sequence_number_length());
+
+    // If there is not enough space in the packet to fit a padding frame
+    // (1 byte) and to expand the stream frame (another 2 bytes) the packet
+    // will not be padded.
+    if (bytes_free < 3) {
+      EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize)
+                - bytes_free, serialized.packet->length());
+    } else {
+      EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize),
+                serialized.packet->length());
+    }
+
+    delete serialized.packet;
+    frames_.clear();
+  }
+}
+
 TEST_P(QuicPacketCreatorTest, SerializeConnectionClose) {
   QuicConnectionCloseFrame frame;
   frame.error_code = QUIC_NO_ERROR;
@@ -760,23 +806,23 @@
   size_t max_packets_per_fec_group = 10;
   creator_.set_max_packets_per_fec_group(max_packets_per_fec_group);
   creator_.set_sequence_number(64 - max_packets_per_fec_group);
-  creator_.UpdateSequenceNumberLength(2, 10000);
+  creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
   creator_.set_sequence_number(64 * 256 - max_packets_per_fec_group);
-  creator_.UpdateSequenceNumberLength(2, 10000);
+  creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
   creator_.set_sequence_number(64 * 256 * 256 - max_packets_per_fec_group);
-  creator_.UpdateSequenceNumberLength(2, 10000);
+  creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
   creator_.set_sequence_number(
       GG_UINT64_C(64) * 256 * 256 * 256 * 256 - max_packets_per_fec_group);
-  creator_.UpdateSequenceNumberLength(2, 10000);
+  creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_6BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 }
@@ -785,20 +831,21 @@
   EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
-  creator_.UpdateSequenceNumberLength(1, 10000);
+  creator_.UpdateSequenceNumberLength(1, 10000 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
-  creator_.UpdateSequenceNumberLength(1, 10000 * 256);
+  creator_.UpdateSequenceNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
-  creator_.UpdateSequenceNumberLength(1, 10000 * 256 * 256);
+  creator_.UpdateSequenceNumberLength(
+      1, 10000 * 256 * 256 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 
   creator_.UpdateSequenceNumberLength(
-      1, GG_UINT64_C(1000) * 256 * 256 * 256 * 256);
+      1, GG_UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize);
   EXPECT_EQ(PACKET_6BYTE_SEQUENCE_NUMBER,
             creator_.next_sequence_number_length());
 }
diff --git a/net/quic/quic_packet_generator.cc b/net/quic/quic_packet_generator.cc
index deb6a9e..2481ddc 100644
--- a/net/quic/quic_packet_generator.cc
+++ b/net/quic/quic_packet_generator.cc
@@ -19,10 +19,10 @@
 // avoid losing them both within the same loss episode. On the other hand,
 // we expect to be able to recover from any loss in about an RTT.
 // We resolve this tradeoff by sending an FEC packet atmost half an RTT,
-// or equivalently, half a cwnd, after the first protected packet. Since we
-// don't want to delay an FEC packet past half an RTT, we set the max FEC
-// group size to be half the current congestion window.
-const float kCongestionWindowMultiplierForFecGroupSize = 0.5;
+// or equivalently, half the max number of in-flight packets,  the first
+// protected packet. Since we don't want to delay an FEC packet past half an
+// RTT, we set the max FEC group size to be half the current congestion window.
+const float kMaxPacketsInFlightMultiplierForFecGroupSize = 0.5;
 
 }  // namespace
 
@@ -85,10 +85,10 @@
 }
 
 void QuicPacketGenerator::OnCongestionWindowChange(
-    QuicByteCount congestion_window) {
+    QuicPacketCount max_packets_in_flight) {
   packet_creator_.set_max_packets_per_fec_group(
-      static_cast<size_t>(kCongestionWindowMultiplierForFecGroupSize *
-                          congestion_window / kDefaultTCPMSS));
+      static_cast<size_t>(kMaxPacketsInFlightMultiplierForFecGroupSize *
+                          max_packets_in_flight));
 }
 
 void QuicPacketGenerator::SetShouldSendAck(bool also_send_feedback,
@@ -378,9 +378,9 @@
 
 void QuicPacketGenerator::UpdateSequenceNumberLength(
       QuicPacketSequenceNumber least_packet_awaited_by_peer,
-      QuicByteCount congestion_window) {
+      QuicPacketCount max_packets_in_flight) {
   return packet_creator_.UpdateSequenceNumberLength(
-      least_packet_awaited_by_peer, congestion_window);
+      least_packet_awaited_by_peer, max_packets_in_flight);
 }
 
 void QuicPacketGenerator::SetConnectionIdLength(uint32 length) {
diff --git a/net/quic/quic_packet_generator.h b/net/quic/quic_packet_generator.h
index 56c3694..3fec02a 100644
--- a/net/quic/quic_packet_generator.h
+++ b/net/quic/quic_packet_generator.h
@@ -100,7 +100,7 @@
   virtual ~QuicPacketGenerator();
 
   // Called by the connection in the event of the congestion window changing.
-  void OnCongestionWindowChange(QuicByteCount congestion_window);
+  void OnCongestionWindowChange(QuicPacketCount max_packets_in_flight);
 
   // Indicates that an ACK frame should be sent.  If |also_send_feedback| is
   // true, then it also indicates a CONGESTION_FEEDBACK frame should be sent.
@@ -165,7 +165,7 @@
   // can be safely changed.
   void UpdateSequenceNumberLength(
       QuicPacketSequenceNumber least_packet_awaited_by_peer,
-      QuicByteCount congestion_window);
+      QuicPacketCount max_packets_in_flight);
 
   // Set the minimum number of bytes for the connection id length;
   void SetConnectionIdLength(uint32 length);
diff --git a/net/quic/quic_packet_generator_test.cc b/net/quic/quic_packet_generator_test.cc
index 8ffa34b..3f2472c 100644
--- a/net/quic/quic_packet_generator_test.cc
+++ b/net/quic/quic_packet_generator_test.cc
@@ -560,15 +560,15 @@
   EXPECT_FALSE(creator_->IsFecGroupOpen());
 
   // On reduced cwnd.
-  generator_.OnCongestionWindowChange(7 * kDefaultTCPMSS);
+  generator_.OnCongestionWindowChange(7);
   EXPECT_EQ(3u, creator_->max_packets_per_fec_group());
 
   // On increased cwnd.
-  generator_.OnCongestionWindowChange(100 * kDefaultTCPMSS);
+  generator_.OnCongestionWindowChange(100);
   EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
 
   // On collapsed cwnd.
-  generator_.OnCongestionWindowChange(1 * kDefaultTCPMSS);
+  generator_.OnCongestionWindowChange(1);
   EXPECT_EQ(2u, creator_->max_packets_per_fec_group());
 }
 
@@ -599,7 +599,7 @@
   EXPECT_TRUE(creator_->IsFecGroupOpen());
 
   // Change FEC groupsize.
-  generator_.OnCongestionWindowChange(2 * kDefaultTCPMSS);
+  generator_.OnCongestionWindowChange(2);
   EXPECT_EQ(2u, creator_->max_packets_per_fec_group());
 
   // Send enough data to trigger one unprotected data packet,
diff --git a/net/quic/quic_protocol.h b/net/quic/quic_protocol.h
index 64d0c23..afd5ed4 100644
--- a/net/quic/quic_protocol.h
+++ b/net/quic/quic_protocol.h
@@ -60,8 +60,8 @@
 const QuicByteCount kDefaultTCPMSS = 1460;
 
 // Maximum size of the initial congestion window in packets.
-const size_t kDefaultInitialWindow = 10;
-const uint32 kMaxInitialWindow = 100;
+const QuicPacketCount kDefaultInitialWindow = 10;
+const QuicPacketCount kMaxInitialWindow = 100;
 
 // Default size of initial flow control window, for both stream and session.
 const uint32 kDefaultFlowControlSendWindow = 16 * 1024;  // 16 KB
@@ -396,8 +396,9 @@
   QUIC_STREAM_PEER_GOING_AWAY,
   // The stream has been cancelled.
   QUIC_STREAM_CANCELLED,
-  // Sending a RST to allow for proper flow control accounting.
-  QUIC_RST_FLOW_CONTROL_ACCOUNTING,
+  // Closing stream locally, sending a RST to allow for proper flow control
+  // accounting. Sent in response to a RST from the peer.
+  QUIC_RST_ACKNOWLEDGEMENT,
 
   // No error. Used as bound while iterating.
   QUIC_STREAM_LAST_ERROR,
diff --git a/net/quic/quic_protocol_test.cc b/net/quic/quic_protocol_test.cc
index 43a009a..9460906 100644
--- a/net/quic/quic_protocol_test.cc
+++ b/net/quic/quic_protocol_test.cc
@@ -18,9 +18,9 @@
 
   // If we ever add different RST codes, we should have a test akin to the
   // following.
-  //  EXPECT_EQ(QUIC_RST_FLOW_CONTROL_ACCOUNTING, AdjustErrorForVersion(
-  //      QUIC_RST_FLOW_CONTROL_ACCOUNTING,
-  //      QUIC_VERSION_18));
+  //  EXPECT_EQ(QUIC_RST_ACKNOWLEDGEMENT, AdjustErrorForVersion(
+  //      QUIC_RST_ACKNOWLEDGEMENT,
+  //      QUIC_VERSION_23));
 }
 
 TEST(QuicProtocolTest, MakeQuicTag) {
diff --git a/net/quic/quic_sent_packet_manager.cc b/net/quic/quic_sent_packet_manager.cc
index 6370d9f..bdf8690 100644
--- a/net/quic/quic_sent_packet_manager.cc
+++ b/net/quic/quic_sent_packet_manager.cc
@@ -192,7 +192,7 @@
       send_algorithm_->BandwidthEstimate(),
       ack_receive_time,
       clock_->WallNow(),
-      rtt_stats_.SmoothedRtt());
+      rtt_stats_.smoothed_rtt());
 
   // If we have received a truncated ack, then we need to clear out some
   // previous transmissions to allow the peer to actually ACK new packets.
@@ -819,15 +819,21 @@
     const {
   // This is equivalent to the TailLossProbeDelay, but slightly more aggressive
   // because crypto handshake messages don't incur a delayed ack time.
-  int64 delay_ms =
-      max(kMinHandshakeTimeoutMs,
-          static_cast<int64>(1.5 * rtt_stats_.SmoothedRtt().ToMilliseconds()));
+  QuicTime::Delta srtt = rtt_stats_.smoothed_rtt();
+  if (srtt.IsZero()) {
+    srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us());
+  }
+  int64 delay_ms = max(kMinHandshakeTimeoutMs,
+                       static_cast<int64>(1.5 * srtt.ToMilliseconds()));
   return QuicTime::Delta::FromMilliseconds(
       delay_ms << consecutive_crypto_retransmission_count_);
 }
 
 const QuicTime::Delta QuicSentPacketManager::GetTailLossProbeDelay() const {
-  QuicTime::Delta srtt = rtt_stats_.SmoothedRtt();
+  QuicTime::Delta srtt = rtt_stats_.smoothed_rtt();
+  if (srtt.IsZero()) {
+    srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us());
+  }
   if (!unacked_packets_.HasMultipleInFlightPackets()) {
     return QuicTime::Delta::Max(
         srtt.Multiply(2), srtt.Multiply(1.5).Add(
@@ -865,6 +871,8 @@
 }
 
 QuicBandwidth QuicSentPacketManager::BandwidthEstimate() const {
+  // TODO(ianswett): Remove BandwidthEstimate from SendAlgorithmInterface
+  // and implement the logic here.
   return send_algorithm_->BandwidthEstimate();
 }
 
@@ -877,12 +885,17 @@
   return sustained_bandwidth_recorder_;
 }
 
-QuicByteCount QuicSentPacketManager::GetCongestionWindow() const {
-  return send_algorithm_->GetCongestionWindow();
+QuicPacketCount QuicSentPacketManager::EstimateMaxPacketsInFlight(
+    QuicByteCount max_packet_length) const {
+  return send_algorithm_->GetCongestionWindow() / max_packet_length;
 }
 
-QuicByteCount QuicSentPacketManager::GetSlowStartThreshold() const {
-  return send_algorithm_->GetSlowStartThreshold();
+QuicPacketCount QuicSentPacketManager::GetCongestionWindowInTcpMss() const {
+  return send_algorithm_->GetCongestionWindow() / kDefaultTCPMSS;
+}
+
+QuicPacketCount QuicSentPacketManager::GetSlowStartThresholdInTcpMss() const {
+  return send_algorithm_->GetSlowStartThreshold() / kDefaultTCPMSS;
 }
 
 void QuicSentPacketManager::EnablePacing() {
diff --git a/net/quic/quic_sent_packet_manager.h b/net/quic/quic_sent_packet_manager.h
index cccacab..f82e34b 100644
--- a/net/quic/quic_sent_packet_manager.h
+++ b/net/quic/quic_sent_packet_manager.h
@@ -182,15 +182,22 @@
 
   const QuicSustainedBandwidthRecorder& SustainedBandwidthRecorder() const;
 
-  // Returns the size of the current congestion window in bytes.  Note, this is
-  // not the *available* window.  Some send algorithms may not use a congestion
-  // window and will return 0.
-  QuicByteCount GetCongestionWindow() const;
+  // Returns the size of the current congestion window in number of
+  // kDefaultTCPMSS-sized segments. Note, this is not the *available* window.
+  // Some send algorithms may not use a congestion window and will return 0.
+  QuicPacketCount GetCongestionWindowInTcpMss() const;
 
-  // Returns the size of the slow start congestion window in bytes,
-  // aka ssthresh.  Some send algorithms do not define a slow start
-  // threshold and will return 0.
-  QuicByteCount GetSlowStartThreshold() const;
+  // Returns the number of packets of length |max_packet_length| which fit in
+  // the current congestion window. More packets may end up in flight if the
+  // congestion window has been recently reduced, of if non-full packets are
+  // sent.
+  QuicPacketCount EstimateMaxPacketsInFlight(
+      QuicByteCount max_packet_length) const;
+
+  // Returns the size of the slow start congestion window in nume of 1460 byte
+  // TCP segments, aka ssthresh.  Some send algorithms do not define a slow
+  // start threshold and will return 0.
+  QuicPacketCount GetSlowStartThresholdInTcpMss() const;
 
   // Enables pacing if it has not already been enabled.
   void EnablePacing();
diff --git a/net/quic/quic_sent_packet_manager_test.cc b/net/quic/quic_sent_packet_manager_test.cc
index bf8c99c..d7a846a 100644
--- a/net/quic/quic_sent_packet_manager_test.cc
+++ b/net/quic/quic_sent_packet_manager_test.cc
@@ -1025,7 +1025,7 @@
   QuicSentPacketManagerPeer::GetRttStats(&manager_)->UpdateRtt(
       min_rtt, QuicTime::Delta::Zero(), QuicTime::Zero());
   EXPECT_EQ(min_rtt,
-            QuicSentPacketManagerPeer::GetRttStats(&manager_)->MinRtt());
+            QuicSentPacketManagerPeer::GetRttStats(&manager_)->min_rtt());
   EXPECT_EQ(min_rtt,
             QuicSentPacketManagerPeer::GetRttStats(
                 &manager_)->recent_min_rtt());
@@ -1052,7 +1052,7 @@
   manager_.OnIncomingAck(ack_frame, clock_.Now());
 
   EXPECT_EQ(min_rtt,
-            QuicSentPacketManagerPeer::GetRttStats(&manager_)->MinRtt());
+            QuicSentPacketManagerPeer::GetRttStats(&manager_)->min_rtt());
   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
             QuicSentPacketManagerPeer::GetRttStats(
                 &manager_)->recent_min_rtt());
@@ -1079,16 +1079,16 @@
   SendCryptoPacket(1);
 
   // Check the min.
-  QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
-      1 * base::Time::kMicrosecondsPerMillisecond);
+  RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_);
+  rtt_stats->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond);
   EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
             manager_.GetRetransmissionTime());
 
   // Test with a standard smoothed RTT.
-  QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
-      100 * base::Time::kMicrosecondsPerMillisecond);
+  rtt_stats->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond);
 
-  QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt();
+  QuicTime::Delta srtt =
+      QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
   QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5));
   EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
 
@@ -1108,15 +1108,15 @@
   SendDataPacket(2);
 
   // Check the min.
-  QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
-      1 * base::Time::kMicrosecondsPerMillisecond);
+  RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_);
+  rtt_stats->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond);
   EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
             manager_.GetRetransmissionTime());
 
   // Test with a standard smoothed RTT.
-  QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
-      100 * base::Time::kMicrosecondsPerMillisecond);
-  QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt();
+  rtt_stats->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond);
+  QuicTime::Delta srtt =
+      QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
   QuicTime::Delta expected_tlp_delay = srtt.Multiply(2);
   QuicTime expected_time = clock_.Now().Add(expected_tlp_delay);
   EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
@@ -1420,7 +1420,7 @@
 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) {
   uint32 initial_rtt_us = 325000;
   EXPECT_NE(initial_rtt_us,
-            manager_.GetRttStats()->SmoothedRtt().ToMicroseconds());
+            manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
 
   QuicConfig config;
   config.SetInitialRoundTripTimeUsToSend(initial_rtt_us);
@@ -1428,8 +1428,8 @@
   EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
   manager_.SetFromConfig(config);
 
-  EXPECT_EQ(initial_rtt_us,
-            manager_.GetRttStats()->SmoothedRtt().ToMicroseconds());
+  EXPECT_EQ(0, manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
+  EXPECT_EQ(initial_rtt_us, manager_.GetRttStats()->initial_rtt_us());
 }
 
 }  // namespace
diff --git a/net/quic/quic_server.cc b/net/quic/quic_server.cc
index b8013c4..fecb4e5 100644
--- a/net/quic/quic_server.cc
+++ b/net/quic/quic_server.cc
@@ -29,8 +29,6 @@
 // the limit.
 const int kReadBufferSize = 2 * kMaxPacketSize;
 
-const uint32 kServerInitialFlowControlWindow = 100 * kMaxPacketSize;
-
 } // namespace
 
 QuicServer::QuicServer(const QuicConfig& config,
@@ -53,11 +51,9 @@
   QuicInMemoryCache::GetInstance();
 
   scoped_ptr<CryptoHandshakeMessage> scfg(
-      crypto_config_.AddDefaultConfig(helper_.GetRandomGenerator(),
-                                      helper_.GetClock(),
-                                      QuicCryptoServerConfig::ConfigOptions()));
-
-  config_.SetInitialCongestionWindowToSend(kServerInitialFlowControlWindow);
+      crypto_config_.AddDefaultConfig(
+          helper_.GetRandomGenerator(), helper_.GetClock(),
+          QuicCryptoServerConfig::ConfigOptions()));
 }
 
 QuicServer::~QuicServer() {
diff --git a/net/quic/quic_server_session.cc b/net/quic/quic_server_session.cc
index efb0bcf..7fab509 100644
--- a/net/quic/quic_server_session.cc
+++ b/net/quic/quic_server_session.cc
@@ -15,8 +15,9 @@
 
 QuicServerSession::QuicServerSession(const QuicConfig& config,
                                      QuicConnection* connection,
-                                     QuicServerSessionVisitor* visitor)
-    : QuicSession(connection, config),
+                                     QuicServerSessionVisitor* visitor,
+                                     bool is_secure)
+    : QuicSession(connection, config, is_secure),
       visitor_(visitor),
       bandwidth_estimate_sent_to_client_(QuicBandwidth::Zero()),
       last_scup_time_(QuicTime::Zero()),
@@ -73,7 +74,7 @@
   const QuicSentPacketManager& sent_packet_manager =
       connection()->sent_packet_manager();
   int64 srtt_ms =
-      sent_packet_manager.GetRttStats()->SmoothedRtt().ToMilliseconds();
+      sent_packet_manager.GetRttStats()->smoothed_rtt().ToMilliseconds();
   int64 now_ms = now.Subtract(last_scup_time_).ToMilliseconds();
   int64 packets_since_last_scup =
       connection()->sequence_number_of_last_sent_packet() -
@@ -127,7 +128,7 @@
   cached_network_params.set_max_bandwidth_timestamp_seconds(
       max_bandwidth_timestamp);
   cached_network_params.set_min_rtt_ms(
-      sent_packet_manager.GetRttStats()->MinRtt().ToMilliseconds());
+      sent_packet_manager.GetRttStats()->min_rtt().ToMilliseconds());
   cached_network_params.set_previous_connection_state(
       bandwidth_recorder.EstimateRecordedDuringSlowStart()
           ? CachedNetworkParameters::SLOW_START
diff --git a/net/quic/quic_server_session.h b/net/quic/quic_server_session.h
index 43107a0..a402005 100644
--- a/net/quic/quic_server_session.h
+++ b/net/quic/quic_server_session.h
@@ -46,7 +46,8 @@
  public:
   QuicServerSession(const QuicConfig& config,
                     QuicConnection* connection,
-                    QuicServerSessionVisitor* visitor);
+                    QuicServerSessionVisitor* visitor,
+                    bool is_secure);
 
   // Override the base class to notify the owner of the connection close.
   void OnConnectionClosed(QuicErrorCode error, bool from_peer) override;
diff --git a/net/quic/quic_session.cc b/net/quic/quic_session.cc
index 4e1fc7b..34a668d 100644
--- a/net/quic/quic_session.cc
+++ b/net/quic/quic_session.cc
@@ -95,7 +95,8 @@
   QuicSession* session_;
 };
 
-QuicSession::QuicSession(QuicConnection* connection, const QuicConfig& config)
+QuicSession::QuicSession(QuicConnection* connection, const QuicConfig& config,
+                         bool is_secure)
     : connection_(connection),
       visitor_shim_(new VisitorShim(this)),
       config_(config),
@@ -105,7 +106,8 @@
       error_(QUIC_NO_ERROR),
       goaway_received_(false),
       goaway_sent_(false),
-      has_pending_handshake_(false) {
+      has_pending_handshake_(false),
+      is_secure_(is_secure) {
   if (connection_->version() == QUIC_VERSION_19) {
     flow_controller_.reset(new QuicFlowController(
         connection_.get(), 0, is_server(), kDefaultFlowControlSendWindow,
diff --git a/net/quic/quic_session.h b/net/quic/quic_session.h
index 1bca3aa..6ca9ce0 100644
--- a/net/quic/quic_session.h
+++ b/net/quic/quic_session.h
@@ -52,7 +52,9 @@
     HANDSHAKE_CONFIRMED,
   };
 
-  QuicSession(QuicConnection* connection, const QuicConfig& config);
+  QuicSession(QuicConnection* connection,
+              const QuicConfig& config,
+              bool is_secure);
   void InitializeSession();
 
   ~QuicSession() override;
@@ -209,6 +211,11 @@
   // Returns true if any stream is flow controller blocked.
   bool IsStreamFlowControlBlocked();
 
+  // Returns true if this is a secure QUIC session.
+  bool is_secure() const {
+    return is_secure_;
+  }
+
   size_t get_max_open_streams() const { return max_open_streams_; }
 
  protected:
@@ -326,6 +333,9 @@
   // Used for session level flow control.
   scoped_ptr<QuicFlowController> flow_controller_;
 
+  // True if this is a secure (HTTPS) QUIC session.
+  bool is_secure_;
+
   DISALLOW_COPY_AND_ASSIGN(QuicSession);
 };
 
diff --git a/net/quic/quic_session_test.cc b/net/quic/quic_session_test.cc
index c248460..edbfbee 100644
--- a/net/quic/quic_session_test.cc
+++ b/net/quic/quic_session_test.cc
@@ -126,7 +126,8 @@
  public:
   explicit TestSession(QuicConnection* connection)
       : QuicSession(connection,
-                    DefaultQuicConfig()),
+                    DefaultQuicConfig(),
+                    false),
         crypto_stream_(this),
         writev_consumes_all_data_(false) {
     InitializeSession();
@@ -399,7 +400,7 @@
   EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _)).WillRepeatedly(
       Return(QuicTime::Delta::Zero()));
   EXPECT_CALL(*send_algorithm, GetCongestionWindow())
-      .WillOnce(Return(kMaxPacketSize * 10));
+      .WillRepeatedly(Return(kMaxPacketSize * 10));
   EXPECT_CALL(*stream2, OnCanWrite())
       .WillOnce(IgnoreResult(Invoke(CreateFunctor(
           &session_, &TestSession::SendStreamData, stream2->id()))));
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index 678463e..cf70608 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -946,7 +946,7 @@
 
   *session = new QuicClientSession(
       connection, socket.Pass(), this, transport_security_state_,
-      server_info.Pass(), config,
+      server_info.Pass(), config, server_id.is_https(),
       base::MessageLoop::current()->message_loop_proxy().get(),
       net_log.net_log());
   all_sessions_[*session] = server_id;  // owning pointer
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
index 4818620..1165b9c 100644
--- a/net/quic/quic_stream_factory_test.cc
+++ b/net/quic/quic_stream_factory_test.cc
@@ -240,7 +240,7 @@
     QuicStreamId stream_id = kClientDataStreamId1;
     return maker_.MakeRstPacket(
         1, true, stream_id,
-        AdjustErrorForVersion(QUIC_RST_FLOW_CONTROL_ACCOUNTING, GetParam()));
+        AdjustErrorForVersion(QUIC_RST_ACKNOWLEDGEMENT, GetParam()));
   }
 
   MockQuicServerInfoFactory quic_server_info_factory_;
diff --git a/net/quic/quic_time_wait_list_manager.cc b/net/quic/quic_time_wait_list_manager.cc
index 42dae00..d59cbc4 100644
--- a/net/quic/quic_time_wait_list_manager.cc
+++ b/net/quic/quic_time_wait_list_manager.cc
@@ -27,8 +27,9 @@
 
 namespace {
 
-// Time period for which the connection_id should live in time wait state..
-const int kTimeWaitSeconds = 5;
+// Time period for which a given connection_id should live in the time-wait
+// state.
+int64 FLAGS_quic_time_wait_list_seconds = 5;
 
 }  // namespace
 
@@ -86,7 +87,8 @@
     QuicConnectionHelperInterface* helper,
     const QuicVersionVector& supported_versions)
     : helper_(helper),
-      kTimeWaitPeriod_(QuicTime::Delta::FromSeconds(kTimeWaitSeconds)),
+      kTimeWaitPeriod_(
+          QuicTime::Delta::FromSeconds(FLAGS_quic_time_wait_list_seconds)),
       connection_id_clean_up_alarm_(
           helper_->CreateAlarm(new ConnectionIdCleanUpAlarm(this))),
       writer_(writer),
@@ -274,6 +276,7 @@
       break;
     }
     // This connection_id has lived its age, retire it now.
+    DVLOG(1) << "Retiring " << it->first << " from the time-wait state.";
     delete it->second.close_packet;
     connection_id_map_.erase(it);
   }
diff --git a/net/quic/quic_utils.cc b/net/quic/quic_utils.cc
index 908e26f..d786a95 100644
--- a/net/quic/quic_utils.cc
+++ b/net/quic/quic_utils.cc
@@ -138,7 +138,7 @@
     RETURN_STRING_LITERAL(QUIC_BAD_APPLICATION_PAYLOAD);
     RETURN_STRING_LITERAL(QUIC_STREAM_PEER_GOING_AWAY);
     RETURN_STRING_LITERAL(QUIC_STREAM_CANCELLED);
-    RETURN_STRING_LITERAL(QUIC_RST_FLOW_CONTROL_ACCOUNTING);
+    RETURN_STRING_LITERAL(QUIC_RST_ACKNOWLEDGEMENT);
     RETURN_STRING_LITERAL(QUIC_STREAM_LAST_ERROR);
   }
   // Return a default value so that we return this when |error| doesn't match
diff --git a/net/quic/reliable_quic_stream.cc b/net/quic/reliable_quic_stream.cc
index 7db9a57..70b6d9a 100644
--- a/net/quic/reliable_quic_stream.cc
+++ b/net/quic/reliable_quic_stream.cc
@@ -457,7 +457,7 @@
     // written on this stream before termination. Done here if needed, using a
     // RST frame.
     DVLOG(1) << ENDPOINT << "Sending RST in OnClose: " << id();
-    session_->SendRstStream(id(), QUIC_RST_FLOW_CONTROL_ACCOUNTING,
+    session_->SendRstStream(id(), QUIC_RST_ACKNOWLEDGEMENT,
                             stream_bytes_written_);
     rst_sent_ = true;
   }
diff --git a/net/quic/test_tools/quic_test_utils.cc b/net/quic/test_tools/quic_test_utils.cc
index fad194b..ae3abfe 100644
--- a/net/quic/test_tools/quic_test_utils.cc
+++ b/net/quic/test_tools/quic_test_utils.cc
@@ -316,7 +316,7 @@
 }
 
 MockSession::MockSession(QuicConnection* connection)
-    : QuicSession(connection, DefaultQuicConfig()) {
+    : QuicSession(connection, DefaultQuicConfig(), /*is_secure=*/false) {
   InitializeSession();
   ON_CALL(*this, WritevData(_, _, _, _, _, _))
       .WillByDefault(testing::Return(QuicConsumedData(0, false)));
@@ -326,7 +326,8 @@
 }
 
 TestSession::TestSession(QuicConnection* connection, const QuicConfig& config)
-    : QuicSession(connection, config), crypto_stream_(nullptr) {
+    : QuicSession(connection, config, /*is_secure=*/false),
+      crypto_stream_(nullptr) {
   InitializeSession();
 }
 
@@ -342,7 +343,7 @@
 
 TestClientSession::TestClientSession(QuicConnection* connection,
                                      const QuicConfig& config)
-    : QuicClientSessionBase(connection, config),
+    : QuicClientSessionBase(connection, config, /*is_secure=*/false),
       crypto_stream_(nullptr) {
   EXPECT_CALL(*this, OnProofValid(_)).Times(AnyNumber());
   InitializeSession();
diff --git a/net/socket/next_proto.cc b/net/socket/next_proto.cc
index c917236..4ae4511 100644
--- a/net/socket/next_proto.cc
+++ b/net/socket/next_proto.cc
@@ -15,7 +15,6 @@
 NextProtoVector NextProtosDefaults() {
   NextProtoVector next_protos;
   next_protos.push_back(kProtoHTTP11);
-  next_protos.push_back(kProtoSPDY3);
   next_protos.push_back(kProtoSPDY31);
   return next_protos;
 }
@@ -27,7 +26,6 @@
   if (quic_enabled)
     next_protos.push_back(kProtoQUIC1SPDY3);
   if (spdy_enabled) {
-    next_protos.push_back(kProtoSPDY3);
     next_protos.push_back(kProtoSPDY31);
   }
   return next_protos;
@@ -37,7 +35,6 @@
   NextProtoVector next_protos;
   next_protos.push_back(kProtoHTTP11);
   next_protos.push_back(kProtoQUIC1SPDY3);
-  next_protos.push_back(kProtoSPDY3);
   return next_protos;
 }
 
@@ -45,7 +42,6 @@
   NextProtoVector next_protos;
   next_protos.push_back(kProtoHTTP11);
   next_protos.push_back(kProtoQUIC1SPDY3);
-  next_protos.push_back(kProtoSPDY3);
   next_protos.push_back(kProtoSPDY31);
   return next_protos;
 }
@@ -55,7 +51,6 @@
   next_protos.push_back(kProtoHTTP11);
   next_protos.push_back(kProtoQUIC1SPDY3);
   next_protos.push_back(kProtoDeprecatedSPDY2);
-  next_protos.push_back(kProtoSPDY3);
   next_protos.push_back(kProtoSPDY31);
   return next_protos;
 }
@@ -64,7 +59,6 @@
   NextProtoVector next_protos;
   next_protos.push_back(kProtoHTTP11);
   next_protos.push_back(kProtoQUIC1SPDY3);
-  next_protos.push_back(kProtoSPDY3);
   next_protos.push_back(kProtoSPDY31);
   next_protos.push_back(kProtoSPDY4);
   return next_protos;
diff --git a/net/socket/next_proto.h b/net/socket/next_proto.h
index e715aca..465001d 100644
--- a/net/socket/next_proto.h
+++ b/net/socket/next_proto.h
@@ -27,7 +27,8 @@
   kProtoSPDYMinimumVersion = kProtoDeprecatedSPDY2,
   kProtoSPDY3 = 101,
   kProtoSPDY31 = 102,
-  kProtoSPDY4 = 103,  // SPDY4 is HTTP/2.
+  // HTTP/2 draft-14 was 103,
+  kProtoSPDY4 = 104,  // SPDY4 is HTTP/2 draft-15.
   kProtoSPDYMaximumVersion = kProtoSPDY4,
 
   kProtoQUIC1SPDY3 = 200,
diff --git a/net/socket/ssl_client_socket.cc b/net/socket/ssl_client_socket.cc
index da2d6ba..269ca7e 100644
--- a/net/socket/ssl_client_socket.cc
+++ b/net/socket/ssl_client_socket.cc
@@ -8,9 +8,11 @@
 #include "base/metrics/sparse_histogram.h"
 #include "base/strings/string_util.h"
 #include "crypto/ec_private_key.h"
+#include "net/base/connection_type_histograms.h"
 #include "net/base/host_port_pair.h"
 #include "net/ssl/channel_id_service.h"
 #include "net/ssl/ssl_config_service.h"
+#include "net/ssl/ssl_connection_status_flags.h"
 
 namespace net {
 
@@ -35,8 +37,8 @@
     return kProtoSPDY3;
   } else if (proto_string == "spdy/3.1") {
     return kProtoSPDY31;
-  } else if (proto_string == "h2-14") {
-    // This is the HTTP/2 draft 14 identifier. For internal
+  } else if (proto_string == "h2-15") {
+    // This is the HTTP/2 draft-15 identifier. For internal
     // consistency, HTTP/2 is named SPDY4 within Chromium.
     return kProtoSPDY4;
   } else if (proto_string == "quic/1+spdy/3") {
@@ -58,9 +60,9 @@
     case kProtoSPDY31:
       return "spdy/3.1";
     case kProtoSPDY4:
-      // This is the HTTP/2 draft 14 identifier. For internal
+      // This is the HTTP/2 draft-15 identifier. For internal
       // consistency, HTTP/2 is named SPDY4 within Chromium.
-      return "h2-14";
+      return "h2-15";
     case kProtoQUIC1SPDY3:
       return "quic/1+spdy/3";
     case kProtoUnknown:
@@ -182,6 +184,28 @@
 }
 
 // static
+void SSLClientSocket::RecordConnectionTypeMetrics(int ssl_version) {
+  UpdateConnectionTypeHistograms(CONNECTION_SSL);
+  switch (ssl_version) {
+    case SSL_CONNECTION_VERSION_SSL2:
+      UpdateConnectionTypeHistograms(CONNECTION_SSL_SSL2);
+      break;
+    case SSL_CONNECTION_VERSION_SSL3:
+      UpdateConnectionTypeHistograms(CONNECTION_SSL_SSL3);
+      break;
+    case SSL_CONNECTION_VERSION_TLS1:
+      UpdateConnectionTypeHistograms(CONNECTION_SSL_TLS1);
+      break;
+    case SSL_CONNECTION_VERSION_TLS1_1:
+      UpdateConnectionTypeHistograms(CONNECTION_SSL_TLS1_1);
+      break;
+    case SSL_CONNECTION_VERSION_TLS1_2:
+      UpdateConnectionTypeHistograms(CONNECTION_SSL_TLS1_2);
+      break;
+  }
+}
+
+// static
 bool SSLClientSocket::IsChannelIDEnabled(
     const SSLConfig& ssl_config,
     ChannelIDService* channel_id_service) {
diff --git a/net/socket/ssl_client_socket.h b/net/socket/ssl_client_socket.h
index c6bd366..7adfa8c 100644
--- a/net/socket/ssl_client_socket.h
+++ b/net/socket/ssl_client_socket.h
@@ -192,6 +192,9 @@
       bool channel_id_enabled,
       bool supports_ecc);
 
+  // Records ConnectionType histograms for a successful SSL connection.
+  static void RecordConnectionTypeMetrics(int ssl_version);
+
   // Returns whether TLS channel ID is enabled.
   static bool IsChannelIDEnabled(
       const SSLConfig& ssl_config,
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
index a7821b2..31a9b8d 100644
--- a/net/socket/ssl_client_socket_nss.cc
+++ b/net/socket/ssl_client_socket_nss.cc
@@ -86,7 +86,6 @@
 #include "crypto/rsa_private_key.h"
 #include "crypto/scoped_nss_types.h"
 #include "net/base/address_list.h"
-#include "net/base/connection_type_histograms.h"
 #include "net/base/dns_util.h"
 #include "net/base/io_buffer.h"
 #include "net/base/net_errors.h"
@@ -1631,6 +1630,11 @@
 }
 
 void SSLClientSocketNSS::Core::HandshakeSucceeded() {
+  // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
+  tracked_objects::ScopedProfile tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "424386 SSLClientSocketNSS::Core::HandshakeSucceeded"));
+
   DCHECK(OnNSSTaskRunner());
 
   PRBool last_handshake_resumed;
@@ -1657,6 +1661,11 @@
 }
 
 int SSLClientSocketNSS::Core::HandleNSSError(PRErrorCode nss_error) {
+  // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
+  tracked_objects::ScopedProfile tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "424386 SSLClientSocketNSS::Core::HandleNSSError"));
+
   DCHECK(OnNSSTaskRunner());
 
   int net_error = MapNSSClientError(nss_error);
@@ -1804,6 +1813,11 @@
   int net_error = OK;
   SECStatus rv = SSL_ForceHandshake(nss_fd_);
 
+  // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
+  tracked_objects::ScopedProfile tracking_profile1(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "424386 SSLClientSocketNSS::Core::DoHandshake 1"));
+
   // Note: this function may be called multiple times during the handshake, so
   // even though channel id and client auth are separate else cases, they can
   // both be used during a single SSL handshake.
@@ -2473,8 +2487,6 @@
          SSL_CONNECTION_COMPRESSION_MASK) <<
         SSL_CONNECTION_COMPRESSION_SHIFT;
 
-    // NSS 3.14.x doesn't have a version macro for TLS 1.2 (because NSS didn't
-    // support it yet), so use 0x0303 directly.
     int version = SSL_CONNECTION_VERSION_UNKNOWN;
     if (channel_info.protocolVersion < SSL_LIBRARY_VERSION_3_0) {
       // All versions less than SSL_LIBRARY_VERSION_3_0 are treated as SSL
@@ -2482,11 +2494,11 @@
       version = SSL_CONNECTION_VERSION_SSL2;
     } else if (channel_info.protocolVersion == SSL_LIBRARY_VERSION_3_0) {
       version = SSL_CONNECTION_VERSION_SSL3;
-    } else if (channel_info.protocolVersion == SSL_LIBRARY_VERSION_3_1_TLS) {
+    } else if (channel_info.protocolVersion == SSL_LIBRARY_VERSION_TLS_1_0) {
       version = SSL_CONNECTION_VERSION_TLS1;
     } else if (channel_info.protocolVersion == SSL_LIBRARY_VERSION_TLS_1_1) {
       version = SSL_CONNECTION_VERSION_TLS1_1;
-    } else if (channel_info.protocolVersion == 0x0303) {
+    } else if (channel_info.protocolVersion == SSL_LIBRARY_VERSION_TLS_1_2) {
       version = SSL_CONNECTION_VERSION_TLS1_2;
     }
     nss_handshake_state_.ssl_connection_status |=
@@ -3492,8 +3504,11 @@
   // TODO(hclam): Skip logging if server cert was expected to be bad because
   // |server_cert_verify_result_| doesn't contain all the information about
   // the cert.
-  if (result == OK)
-    LogConnectionTypeMetrics();
+  if (result == OK) {
+    int ssl_version =
+        SSLConnectionStatusToVersion(core_->state().ssl_connection_status);
+    RecordConnectionTypeMetrics(ssl_version);
+  }
 
   const CertStatus cert_status = server_cert_verify_result_.cert_status;
   if (transport_security_state_ &&
@@ -3561,29 +3576,6 @@
           << ct_verify_result_.unknown_logs_scts.size();
 }
 
-void SSLClientSocketNSS::LogConnectionTypeMetrics() const {
-  UpdateConnectionTypeHistograms(CONNECTION_SSL);
-  int ssl_version = SSLConnectionStatusToVersion(
-      core_->state().ssl_connection_status);
-  switch (ssl_version) {
-    case SSL_CONNECTION_VERSION_SSL2:
-      UpdateConnectionTypeHistograms(CONNECTION_SSL_SSL2);
-      break;
-    case SSL_CONNECTION_VERSION_SSL3:
-      UpdateConnectionTypeHistograms(CONNECTION_SSL_SSL3);
-      break;
-    case SSL_CONNECTION_VERSION_TLS1:
-      UpdateConnectionTypeHistograms(CONNECTION_SSL_TLS1);
-      break;
-    case SSL_CONNECTION_VERSION_TLS1_1:
-      UpdateConnectionTypeHistograms(CONNECTION_SSL_TLS1_1);
-      break;
-    case SSL_CONNECTION_VERSION_TLS1_2:
-      UpdateConnectionTypeHistograms(CONNECTION_SSL_TLS1_2);
-      break;
-  };
-}
-
 void SSLClientSocketNSS::EnsureThreadIdAssigned() const {
   base::AutoLock auto_lock(lock_);
   if (valid_thread_id_ != base::kInvalidThreadId)
diff --git a/net/socket/ssl_client_socket_nss.h b/net/socket/ssl_client_socket_nss.h
index 3f89a94..71f09c0 100644
--- a/net/socket/ssl_client_socket_nss.h
+++ b/net/socket/ssl_client_socket_nss.h
@@ -144,8 +144,6 @@
 
   void VerifyCT();
 
-  void LogConnectionTypeMetrics() const;
-
   // The following methods are for debugging bug 65948. Will remove this code
   // after fixing bug 65948.
   void EnsureThreadIdAssigned() const;
diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc
index 2d1830f..9fdfe38 100644
--- a/net/socket/ssl_client_socket_openssl.cc
+++ b/net/socket/ssl_client_socket_openssl.cc
@@ -101,9 +101,9 @@
       return SSL_CONNECTION_VERSION_SSL3;
     case TLS1_VERSION:
       return SSL_CONNECTION_VERSION_TLS1;
-    case 0x0302:
+    case TLS1_1_VERSION:
       return SSL_CONNECTION_VERSION_TLS1_1;
-    case 0x0303:
+    case TLS1_2_VERSION:
       return SSL_CONNECTION_VERSION_TLS1_2;
     default:
       return SSL_CONNECTION_VERSION_UNKNOWN;
@@ -1095,6 +1095,9 @@
     }
   }
 
+  if (result == OK)
+    RecordConnectionTypeMetrics(GetNetSSLVersion(ssl_));
+
   const CertStatus cert_status = server_cert_verify_result_.cert_status;
   if (transport_security_state_ &&
       (result == OK ||
diff --git a/net/socket/ssl_server_socket_unittest.cc b/net/socket/ssl_server_socket_unittest.cc
index e9957f5..5fabdd2 100644
--- a/net/socket/ssl_server_socket_unittest.cc
+++ b/net/socket/ssl_server_socket_unittest.cc
@@ -23,7 +23,6 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
 #include "crypto/nss_util.h"
 #include "crypto/rsa_private_key.h"
 #include "net/base/address_list.h"
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
index e7eb092..7a1c3df 100644
--- a/net/spdy/spdy_framer_test.cc
+++ b/net/spdy/spdy_framer_test.cc
@@ -2045,8 +2045,8 @@
   {
     const char kDescription[] =
         "SYN_STREAM frame, low pri, no FIN";
-
     const SpdyPriority priority = IsSpdy2() ? 2 : 4;
+
     const unsigned char kV2FrameData[] = {
       0x80, spdy_version_ch_, 0x00, 0x01,
       0x00, 0x00, 0x00, 0x36,
@@ -2083,15 +2083,70 @@
       0x80, 0x00, 0x00, 0x00,
       0x00, 0xFF, 0xFF,
     };
+    const unsigned char kV2SIMDFrameData[] = {
+      0x80, spdy_version_ch_, 0x00, 0x01,
+      0x00, 0x00, 0x00, 0x33,
+      0x00, 0x00, 0x00, 0x01,
+      0x00, 0x00, 0x00, 0x00,
+      0x80, 0x00, 0x38, 0xea,
+      0xdf, 0xa2, 0x51, 0xb2,
+      0x62, 0x60, 0x62, 0x60,
+      0x4e, 0x4a, 0x2c, 0x62,
+      0x60, 0x06, 0x08, 0xa0,
+      0xb4, 0xfc, 0x7c, 0x80,
+      0x00, 0x62, 0x60, 0x06,
+      0x13, 0x00, 0x01, 0x94,
+      0x94, 0x58, 0x04, 0x10,
+      0x40, 0x00, 0x00, 0x00,
+      0x00, 0xff, 0xff,
+    };
+    const unsigned char kV3SIMDFrameData[] = {
+      0x80, spdy_version_ch_, 0x00, 0x01,
+      0x00, 0x00, 0x00, 0x32,
+      0x00, 0x00, 0x00, 0x01,
+      0x00, 0x00, 0x00, 0x00,
+      0x80, 0x00, 0x38, 0xea,
+      0xe3, 0xc6, 0xa7, 0xc2,
+      0x02, 0xe5, 0x0e, 0x50,
+      0xc2, 0x4b, 0x4a, 0x04,
+      0xe5, 0x0b, 0x66, 0x80,
+      0x00, 0x4a, 0xcb, 0xcf,
+      0x07, 0x08, 0x20, 0x24,
+      0x0a, 0x20, 0x80, 0x92,
+      0x12, 0x8b, 0x00, 0x02,
+      0x08, 0x00, 0x00, 0x00,
+      0xff, 0xff,
+    };
+
     SpdySynStreamIR syn_stream(1);
     syn_stream.set_priority(priority);
     syn_stream.SetHeader("bar", "foo");
     syn_stream.SetHeader("foo", "bar");
     scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream));
+    const unsigned char* frame_data =
+        reinterpret_cast<const unsigned char*>(frame->data());
     if (IsSpdy2()) {
-      CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
+      // Try comparing with SIMD version, if that fails, do a failing check
+      // with pretty printing against non-SIMD version
+      if (memcmp(frame_data,
+                 kV2SIMDFrameData,
+                 std::min(arraysize(kV2SIMDFrameData), frame->size())) != 0) {
+        CompareCharArraysWithHexError(kDescription,
+                                      frame_data,
+                                      frame->size(),
+                                      kV2FrameData,
+                                      arraysize(kV2FrameData));
+      }
     } else if (IsSpdy3()) {
-      CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
+      if (memcmp(frame_data,
+                 kV3SIMDFrameData,
+                 std::min(arraysize(kV3SIMDFrameData), frame->size())) != 0) {
+        CompareCharArraysWithHexError(kDescription,
+                                      frame_data,
+                                      frame->size(),
+                                      kV3FrameData,
+                                      arraysize(kV3FrameData));
+      }
     } else {
       LOG(FATAL) << "Unsupported version in test.";
     }
@@ -2280,14 +2335,66 @@
       0x00, 0x00, 0x00, 0xff,
       0xff,
     };
+    const unsigned char kV2SIMDFrameData[] = {
+      0x80, spdy_version_ch_, 0x00, 0x02,
+      0x00, 0x00, 0x00, 0x2f,
+      0x00, 0x00, 0x00, 0x01,
+      0x00, 0x00, 0x38, 0xea,
+      0xdf, 0xa2, 0x51, 0xb2,
+      0x62, 0x60, 0x62, 0x60,
+      0x4e, 0x4a, 0x2c, 0x62,
+      0x60, 0x06, 0x08, 0xa0,
+      0xb4, 0xfc, 0x7c, 0x80,
+      0x00, 0x62, 0x60, 0x06,
+      0x13, 0x00, 0x01, 0x94,
+      0x94, 0x58, 0x04, 0x10,
+      0x40, 0x00, 0x00, 0x00,
+      0x00, 0xff, 0xff,
+    };
+    const unsigned char kV3SIMDFrameData[] = {
+      0x80, spdy_version_ch_, 0x00, 0x02,
+      0x00, 0x00, 0x00, 0x2c,
+      0x00, 0x00, 0x00, 0x01,
+      0x38, 0xea, 0xe3, 0xc6,
+      0xa7, 0xc2, 0x02, 0xe5,
+      0x0e, 0x50, 0xc2, 0x4b,
+      0x4a, 0x04, 0xe5, 0x0b,
+      0x66, 0x80, 0x00, 0x4a,
+      0xcb, 0xcf, 0x07, 0x08,
+      0x20, 0x24, 0x0a, 0x20,
+      0x80, 0x92, 0x12, 0x8b,
+      0x00, 0x02, 0x08, 0x00,
+      0x00, 0x00, 0xff, 0xff,
+    };
+
     SpdySynReplyIR syn_reply(1);
     syn_reply.SetHeader("bar", "foo");
     syn_reply.SetHeader("foo", "bar");
     scoped_ptr<SpdyFrame> frame(framer.SerializeSynReply(syn_reply));
+    const unsigned char* frame_data =
+        reinterpret_cast<const unsigned char*>(frame->data());
     if (IsSpdy2()) {
-      CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
+      // Try comparing with SIMD version, if that fails, do a failing check
+      // with pretty printing against non-SIMD version
+      if (memcmp(frame_data,
+                 kV2SIMDFrameData,
+                 std::min(arraysize(kV2SIMDFrameData), frame->size())) != 0) {
+        CompareCharArraysWithHexError(kDescription,
+                                      frame_data,
+                                      frame->size(),
+                                      kV2FrameData,
+                                      arraysize(kV2FrameData));
+      }
     } else if (IsSpdy3()) {
-      CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
+      if (memcmp(frame_data,
+                 kV3SIMDFrameData,
+                 std::min(arraysize(kV3SIMDFrameData), frame->size())) != 0) {
+        CompareCharArraysWithHexError(kDescription,
+                                      frame_data,
+                                      frame->size(),
+                                      kV3FrameData,
+                                      arraysize(kV3FrameData));
+      }
     } else {
       LOG(FATAL) << "Unsupported version in test.";
     }
@@ -2886,14 +2993,66 @@
       0x00, 0x00, 0x00, 0xff,
       0xff,
     };
+    const unsigned char kV2SIMDFrameData[] = {
+      0x80, spdy_version_ch_, 0x00, 0x08,
+      0x00, 0x00, 0x00, 0x2f,
+      0x00, 0x00, 0x00, 0x01,
+      0x00, 0x00, 0x38, 0xea,
+      0xdf, 0xa2, 0x51, 0xb2,
+      0x62, 0x60, 0x62, 0x60,
+      0x4e, 0x4a, 0x2c, 0x62,
+      0x60, 0x06, 0x08, 0xa0,
+      0xb4, 0xfc, 0x7c, 0x80,
+      0x00, 0x62, 0x60, 0x06,
+      0x13, 0x00, 0x01, 0x94,
+      0x94, 0x58, 0x04, 0x10,
+      0x40, 0x00, 0x00, 0x00,
+      0x00, 0xff, 0xff,
+    };
+    const unsigned char kV3SIMDFrameData[] = {
+      0x80, spdy_version_ch_, 0x00, 0x08,
+      0x00, 0x00, 0x00, 0x2c,
+      0x00, 0x00, 0x00, 0x01,
+      0x38, 0xea, 0xe3, 0xc6,
+      0xa7, 0xc2, 0x02, 0xe5,
+      0x0e, 0x50, 0xc2, 0x4b,
+      0x4a, 0x04, 0xe5, 0x0b,
+      0x66, 0x80, 0x00, 0x4a,
+      0xcb, 0xcf, 0x07, 0x08,
+      0x20, 0x24, 0x0a, 0x20,
+      0x80, 0x92, 0x12, 0x8b,
+      0x00, 0x02, 0x08, 0x00,
+      0x00, 0x00, 0xff, 0xff,
+    };
+
     SpdyHeadersIR headers_ir(1);
     headers_ir.SetHeader("bar", "foo");
     headers_ir.SetHeader("foo", "bar");
     scoped_ptr<SpdyFrame> frame(framer.SerializeHeaders(headers_ir));
+    const unsigned char* frame_data =
+        reinterpret_cast<const unsigned char*>(frame->data());
     if (IsSpdy2()) {
-      CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
+      // Try comparing with SIMD version, if that fails, do a failing check
+      // with pretty printing against non-SIMD version
+      if (memcmp(frame_data,
+                 kV2SIMDFrameData,
+                 std::min(arraysize(kV2SIMDFrameData), frame->size())) != 0) {
+        CompareCharArraysWithHexError(kDescription,
+                                      frame_data,
+                                      frame->size(),
+                                      kV2FrameData,
+                                      arraysize(kV2FrameData));
+      }
     } else if (IsSpdy3()) {
-      CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
+      if (memcmp(frame_data,
+                 kV3SIMDFrameData,
+                 std::min(arraysize(kV3SIMDFrameData), frame->size())) != 0) {
+        CompareCharArraysWithHexError(kDescription,
+                                      frame_data,
+                                      frame->size(),
+                                      kV3FrameData,
+                                      arraysize(kV3FrameData));
+      }
     } else {
       // Deflate compression doesn't apply to HPACK.
     }
diff --git a/net/spdy/spdy_session_pool.cc b/net/spdy/spdy_session_pool.cc
index d839785..ddcc574 100644
--- a/net/spdy/spdy_session_pool.cc
+++ b/net/spdy/spdy_session_pool.cc
@@ -55,7 +55,7 @@
       // |default_protocol_|.
       default_protocol_(
           (default_protocol == kProtoUnknown) ?
-          kProtoSPDY3 : default_protocol),
+          kProtoSPDY31 : default_protocol),
       stream_initial_recv_window_size_(stream_initial_recv_window_size),
       initial_max_concurrent_streams_(initial_max_concurrent_streams),
       max_concurrent_streams_limit_(max_concurrent_streams_limit),
diff --git a/net/test/cert_test_util.cc b/net/test/cert_test_util.cc
index acf2c60..c6c412d 100644
--- a/net/test/cert_test_util.cc
+++ b/net/test/cert_test_util.cc
@@ -6,7 +6,6 @@
 
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
-#include "base/path_service.h"
 #include "net/cert/ev_root_ca_metadata.h"
 #include "net/cert/x509_certificate.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/net/test/cert_test_util_nss.cc b/net/test/cert_test_util_nss.cc
index d377e46..ee929e5 100644
--- a/net/test/cert_test_util_nss.cc
+++ b/net/test/cert_test_util_nss.cc
@@ -9,7 +9,6 @@
 
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
-#include "base/path_service.h"
 #include "crypto/nss_util.h"
 #include "crypto/rsa_private_key.h"
 #include "net/cert/cert_type.h"
diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc
index 9856b64..7ac764f 100644
--- a/net/test/embedded_test_server/embedded_test_server.cc
+++ b/net/test/embedded_test_server/embedded_test_server.cc
@@ -8,7 +8,6 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
 #include "base/process/process_metrics.h"
 #include "base/run_loop.h"
 #include "base/stl_util.h"
diff --git a/net/test/embedded_test_server/embedded_test_server_unittest.cc b/net/test/embedded_test_server/embedded_test_server_unittest.cc
index 2f614df..28d909e 100644
--- a/net/test/embedded_test_server/embedded_test_server_unittest.cc
+++ b/net/test/embedded_test_server/embedded_test_server_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "net/test/embedded_test_server/embedded_test_server.h"
 
+#include "base/path_service.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread.h"
 #include "net/http/http_response_headers.h"
diff --git a/net/test/spawned_test_server/local_test_server_win.cc b/net/test/spawned_test_server/local_test_server_win.cc
index 401cfac..412e4e1 100644
--- a/net/test/spawned_test_server/local_test_server_win.cc
+++ b/net/test/spawned_test_server/local_test_server_win.cc
@@ -12,7 +12,6 @@
 #include "base/environment.h"
 #include "base/files/file_path.h"
 #include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
 #include "base/process/launch.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc
index e3b9ef8..55e2d88 100644
--- a/net/tools/quic/end_to_end_test.cc
+++ b/net/tools/quic/end_to_end_test.cc
@@ -940,11 +940,11 @@
   const QuicSentPacketManager& server_sent_packet_manager =
       *GetSentPacketManagerFromFirstServerSession();
 
-  // The client shouldn't set it's initial window based on the negotiated value.
-  EXPECT_EQ(kDefaultInitialWindow * kDefaultTCPMSS,
-            client_sent_packet_manager.GetCongestionWindow());
-  EXPECT_EQ(kMaxInitialWindow * kDefaultTCPMSS,
-            server_sent_packet_manager.GetCongestionWindow());
+  // The client shouldn't set its initial window based on the negotiated value.
+  EXPECT_EQ(kDefaultInitialWindow,
+            client_sent_packet_manager.GetCongestionWindowInTcpMss());
+  EXPECT_EQ(kMaxInitialWindow,
+            server_sent_packet_manager.GetCongestionWindowInTcpMss());
 
   EXPECT_EQ(GetParam().use_pacing, server_sent_packet_manager.using_pacing());
   EXPECT_EQ(GetParam().use_pacing, client_sent_packet_manager.using_pacing());
@@ -987,18 +987,17 @@
   QuicSession* session = dispatcher->session_map().begin()->second;
   const QuicSentPacketManager& client_sent_packet_manager =
       client_->client()->session()->connection()->sent_packet_manager();
-  const QuicSentPacketManager& server_sent_packet_manager =
-      session->connection()->sent_packet_manager();
 
   // Now that acks have been exchanged, the RTT estimate has decreased on the
   // server and is not infinite on the client.
   EXPECT_FALSE(
-      client_sent_packet_manager.GetRttStats()->SmoothedRtt().IsInfinite());
+      client_sent_packet_manager.GetRttStats()->smoothed_rtt().IsInfinite());
+  const RttStats& server_rtt_stats =
+      *session->connection()->sent_packet_manager().GetRttStats();
   EXPECT_EQ(static_cast<int64>(kMaxInitialRoundTripTimeUs),
-            server_sent_packet_manager.GetRttStats()->initial_rtt_us());
-  EXPECT_GE(
-      static_cast<int64>(kMaxInitialRoundTripTimeUs),
-      server_sent_packet_manager.GetRttStats()->SmoothedRtt().ToMicroseconds());
+            server_rtt_stats.initial_rtt_us());
+  EXPECT_GE(static_cast<int64>(kMaxInitialRoundTripTimeUs),
+            server_rtt_stats.smoothed_rtt().ToMicroseconds());
   server_thread_->Resume();
 }
 
@@ -1024,7 +1023,7 @@
   // Now that acks have been exchanged, the RTT estimate has decreased on the
   // server and is not infinite on the client.
   EXPECT_FALSE(
-      client_sent_packet_manager.GetRttStats()->SmoothedRtt().IsInfinite());
+      client_sent_packet_manager.GetRttStats()->smoothed_rtt().IsInfinite());
   // Expect the default rtt of 100ms.
   EXPECT_EQ(static_cast<int64>(100 * base::Time::kMicrosecondsPerMillisecond),
             server_sent_packet_manager.GetRttStats()->initial_rtt_us());
diff --git a/net/tools/quic/quic_client.cc b/net/tools/quic/quic_client.cc
index 7b2c994..b28ec2b 100644
--- a/net/tools/quic/quic_client.cc
+++ b/net/tools/quic/quic_client.cc
@@ -199,7 +199,8 @@
                          factory,
                          /* owns_writer= */ false,
                          /* is_server= */ false,
-                         supported_versions_)));
+                         supported_versions_),
+      server_id_.is_https()));
 
   // Reset |writer_| after |session_| so that the old writer outlives the old
   // session.
diff --git a/net/tools/quic/quic_client_session.cc b/net/tools/quic/quic_client_session.cc
index db885dc..87ca0ce 100644
--- a/net/tools/quic/quic_client_session.cc
+++ b/net/tools/quic/quic_client_session.cc
@@ -15,8 +15,9 @@
 namespace tools {
 
 QuicClientSession::QuicClientSession(const QuicConfig& config,
-                                     QuicConnection* connection)
-    : QuicClientSessionBase(connection, config) {
+                                     QuicConnection* connection,
+                                     bool is_secure)
+    : QuicClientSessionBase(connection, config, is_secure) {
 }
 
 QuicClientSession::~QuicClientSession() {
diff --git a/net/tools/quic/quic_client_session.h b/net/tools/quic/quic_client_session.h
index 3c92efa..d1cd38c 100644
--- a/net/tools/quic/quic_client_session.h
+++ b/net/tools/quic/quic_client_session.h
@@ -25,7 +25,9 @@
 
 class QuicClientSession : public QuicClientSessionBase {
  public:
-  QuicClientSession(const QuicConfig& config, QuicConnection* connection);
+  QuicClientSession(const QuicConfig& config,
+                    QuicConnection* connection,
+                    bool is_secure);
   ~QuicClientSession() override;
 
   void InitializeSession(const QuicServerId& server_id,
diff --git a/net/tools/quic/quic_client_session_test.cc b/net/tools/quic/quic_client_session_test.cc
index 5b5c415..61422e1 100644
--- a/net/tools/quic/quic_client_session_test.cc
+++ b/net/tools/quic/quic_client_session_test.cc
@@ -42,7 +42,8 @@
   ToolsQuicClientSessionTest()
       : connection_(
             new PacketSavingConnection(false, SupportedVersions(GetParam()))) {
-    session_.reset(new QuicClientSession(DefaultQuicConfig(), connection_));
+    session_.reset(new QuicClientSession(DefaultQuicConfig(), connection_,
+                                         /*is_secure=*/false));
     session_->InitializeSession(
         QuicServerId(kServerHostname, kPort, false, PRIVACY_MODE_DISABLED),
         &crypto_config_);
diff --git a/net/tools/quic/quic_dispatcher.cc b/net/tools/quic/quic_dispatcher.cc
index 747785e..16cee2b 100644
--- a/net/tools/quic/quic_dispatcher.cc
+++ b/net/tools/quic/quic_dispatcher.cc
@@ -364,7 +364,8 @@
   QuicServerSession* session = new QuicServerSession(
       config_,
       CreateQuicConnection(connection_id, server_address, client_address),
-      this);
+      this,
+      crypto_config_.HasProofSource());
   session->InitializeSession(crypto_config_);
   return session;
 }
diff --git a/net/tools/quic/quic_server.cc b/net/tools/quic/quic_server.cc
index 9d36909..2694365 100644
--- a/net/tools/quic/quic_server.cc
+++ b/net/tools/quic/quic_server.cc
@@ -36,7 +36,6 @@
 
 const int kEpollFlags = EPOLLIN | EPOLLOUT | EPOLLET;
 const char kSourceAddressTokenSecret[] = "secret";
-const uint32 kServerInitialFlowControlWindow = 100 * net::kMaxPacketSize;
 
 }  // namespace
 
@@ -78,9 +77,6 @@
       crypto_config_.AddDefaultConfig(
           QuicRandom::GetInstance(), &clock,
           QuicCryptoServerConfig::ConfigOptions()));
-
-  // Set flow control options in the config.
-  config_.SetInitialCongestionWindowToSend(kServerInitialFlowControlWindow);
 }
 
 QuicServer::~QuicServer() {
diff --git a/net/tools/quic/quic_server_session.cc b/net/tools/quic/quic_server_session.cc
index 64e664d..1dd5748 100644
--- a/net/tools/quic/quic_server_session.cc
+++ b/net/tools/quic/quic_server_session.cc
@@ -16,8 +16,9 @@
 
 QuicServerSession::QuicServerSession(const QuicConfig& config,
                                      QuicConnection* connection,
-                                     QuicServerSessionVisitor* visitor)
-    : QuicSession(connection, config),
+                                     QuicServerSessionVisitor* visitor,
+                                     bool is_secure)
+    : QuicSession(connection, config, is_secure),
       visitor_(visitor),
       bandwidth_estimate_sent_to_client_(QuicBandwidth::Zero()),
       last_scup_time_(QuicTime::Zero()),
@@ -74,7 +75,7 @@
   const QuicSentPacketManager& sent_packet_manager =
       connection()->sent_packet_manager();
   int64 srtt_ms =
-      sent_packet_manager.GetRttStats()->SmoothedRtt().ToMilliseconds();
+      sent_packet_manager.GetRttStats()->smoothed_rtt().ToMilliseconds();
   int64 now_ms = now.Subtract(last_scup_time_).ToMilliseconds();
   int64 packets_since_last_scup =
       connection()->sequence_number_of_last_sent_packet() -
@@ -128,7 +129,7 @@
   cached_network_params.set_max_bandwidth_timestamp_seconds(
       max_bandwidth_timestamp);
   cached_network_params.set_min_rtt_ms(
-      sent_packet_manager.GetRttStats()->MinRtt().ToMilliseconds());
+      sent_packet_manager.GetRttStats()->min_rtt().ToMilliseconds());
   cached_network_params.set_previous_connection_state(
       bandwidth_recorder.EstimateRecordedDuringSlowStart()
           ? CachedNetworkParameters::SLOW_START
diff --git a/net/tools/quic/quic_server_session.h b/net/tools/quic/quic_server_session.h
index 603ad35..cdc2bf3 100644
--- a/net/tools/quic/quic_server_session.h
+++ b/net/tools/quic/quic_server_session.h
@@ -47,7 +47,8 @@
  public:
   QuicServerSession(const QuicConfig& config,
                     QuicConnection* connection,
-                    QuicServerSessionVisitor* visitor);
+                    QuicServerSessionVisitor* visitor,
+                    bool is_secure);
 
   // Override the base class to notify the owner of the connection close.
   void OnConnectionClosed(QuicErrorCode error, bool from_peer) override;
diff --git a/net/tools/quic/quic_server_session_test.cc b/net/tools/quic/quic_server_session_test.cc
index 9f36241..202022f 100644
--- a/net/tools/quic/quic_server_session_test.cc
+++ b/net/tools/quic/quic_server_session_test.cc
@@ -79,7 +79,8 @@
 
     connection_ =
         new StrictMock<MockConnection>(true, SupportedVersions(GetParam()));
-    session_.reset(new QuicServerSession(config_, connection_, &owner_));
+    session_.reset(new QuicServerSession(config_, connection_, &owner_,
+                                         /*is_secure=*/false));
     MockClock clock;
     handshake_message_.reset(crypto_config_.AddDefaultConfig(
         QuicRandom::GetInstance(), &clock,
@@ -129,8 +130,8 @@
 
   // Send a reset (and expect the peer to send a RST in response).
   QuicRstStreamFrame rst1(kClientDataStreamId1, QUIC_STREAM_NO_ERROR, 0);
-  EXPECT_CALL(*connection_, SendRstStream(kClientDataStreamId1,
-                                          QUIC_RST_FLOW_CONTROL_ACCOUNTING, 0));
+  EXPECT_CALL(*connection_,
+              SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0));
   visitor_->OnRstStream(rst1);
   EXPECT_EQ(0u, session_->GetNumOpenStreams());
 
@@ -145,8 +146,8 @@
 TEST_P(QuicServerSessionTest, NeverOpenStreamDueToReset) {
   // Send a reset (and expect the peer to send a RST in response).
   QuicRstStreamFrame rst1(kClientDataStreamId1, QUIC_STREAM_NO_ERROR, 0);
-  EXPECT_CALL(*connection_, SendRstStream(kClientDataStreamId1,
-                                          QUIC_RST_FLOW_CONTROL_ACCOUNTING, 0));
+  EXPECT_CALL(*connection_,
+              SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0));
   visitor_->OnRstStream(rst1);
   EXPECT_EQ(0u, session_->GetNumOpenStreams());
 
@@ -173,8 +174,8 @@
 
   // Send a reset (and expect the peer to send a RST in response).
   QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_STREAM_NO_ERROR, 0);
-  EXPECT_CALL(*connection_, SendRstStream(kClientDataStreamId1,
-                                          QUIC_RST_FLOW_CONTROL_ACCOUNTING, 0));
+  EXPECT_CALL(*connection_,
+              SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0));
   visitor_->OnRstStream(rst);
 
   // If we were tracking, we'd probably want to reject this because it's data
@@ -305,6 +306,7 @@
   if (version() <= QUIC_VERSION_21) {
     return;
   }
+
   // Test that bandwidth estimate updates are sent to the client, only after the
   // bandwidth estimate has changes sufficiently, and enough time has passed.
 
@@ -323,6 +325,11 @@
       QuicConnectionPeer::GetSentPacketManager(session_->connection());
   QuicSustainedBandwidthRecorder& bandwidth_recorder =
       QuicSentPacketManagerPeer::GetBandwidthRecorder(sent_packet_manager);
+  // Seed an rtt measurement equal to the initial default rtt.
+  RttStats* rtt_stats =
+      QuicSentPacketManagerPeer::GetRttStats(sent_packet_manager);
+  rtt_stats->UpdateRtt(QuicTime::Delta::FromMicroseconds(
+      rtt_stats->initial_rtt_us()), QuicTime::Delta::Zero(), QuicTime::Zero());
   QuicSustainedBandwidthRecorderPeer::SetBandwidthEstimate(
       &bandwidth_recorder, bandwidth_estimate_kbytes_per_second);
   QuicSustainedBandwidthRecorderPeer::SetMaxBandwidthEstimate(
@@ -342,7 +349,7 @@
   // Bandwidth estimate has now changed sufficiently and enough time has passed,
   // but not enough packets have been sent.
   int64 srtt_ms =
-      sent_packet_manager->GetRttStats()->SmoothedRtt().ToMilliseconds();
+      sent_packet_manager->GetRttStats()->smoothed_rtt().ToMilliseconds();
   now = now.Add(QuicTime::Delta::FromMilliseconds(
       kMinIntervalBetweenServerConfigUpdatesRTTs * srtt_ms));
   session_->OnCongestionWindowChange(now);
@@ -363,7 +370,7 @@
   expected_network_params.set_min_rtt_ms(session_->connection()
                                              ->sent_packet_manager()
                                              .GetRttStats()
-                                             ->MinRtt()
+                                             ->min_rtt()
                                              .ToMilliseconds());
   expected_network_params.set_previous_connection_state(
       CachedNetworkParameters::CONGESTION_AVOIDANCE);
diff --git a/net/tools/quic/quic_spdy_client_stream_test.cc b/net/tools/quic/quic_spdy_client_stream_test.cc
index 090e2da..d2106d9 100644
--- a/net/tools/quic/quic_spdy_client_stream_test.cc
+++ b/net/tools/quic/quic_spdy_client_stream_test.cc
@@ -29,7 +29,7 @@
   QuicSpdyClientStreamTest()
       : connection_(new StrictMock<MockConnection>(
             false, SupportedVersions(GetParam()))),
-        session_(DefaultQuicConfig(), connection_),
+        session_(DefaultQuicConfig(), connection_, /*is_secure=*/false),
         body_("hello world") {
     session_.InitializeSession(
         QuicServerId("example.com", 80, false, PRIVACY_MODE_DISABLED),
diff --git a/net/tools/quic/quic_time_wait_list_manager.cc b/net/tools/quic/quic_time_wait_list_manager.cc
index eb32282..58f50fe 100644
--- a/net/tools/quic/quic_time_wait_list_manager.cc
+++ b/net/tools/quic/quic_time_wait_list_manager.cc
@@ -28,8 +28,9 @@
 
 namespace {
 
-// Time period for which the connection_id should live in time wait state..
-const int kTimeWaitSeconds = 5;
+// Time period for which a given connection_id should live in the time-wait
+// state.
+int64 FLAGS_quic_time_wait_list_seconds = 5;
 
 }  // namespace
 
@@ -90,7 +91,8 @@
     EpollServer* epoll_server,
     const QuicVersionVector& supported_versions)
     : epoll_server_(epoll_server),
-      kTimeWaitPeriod_(QuicTime::Delta::FromSeconds(kTimeWaitSeconds)),
+      kTimeWaitPeriod_(
+          QuicTime::Delta::FromSeconds(FLAGS_quic_time_wait_list_seconds)),
       connection_id_clean_up_alarm_(new ConnectionIdCleanUpAlarm(this)),
       clock_(epoll_server_),
       writer_(writer),
@@ -280,6 +282,7 @@
       break;
     }
     // This connection_id has lived its age, retire it now.
+    DVLOG(1) << "Retiring " << it->first << " from the time-wait state.";
     delete it->second.close_packet;
     connection_id_map_.erase(it);
   }
diff --git a/net/tools/quic/test_tools/quic_test_client.cc b/net/tools/quic/test_tools/quic_test_client.cc
index 16fa4ef..d8e23e7 100644
--- a/net/tools/quic/test_tools/quic_test_client.cc
+++ b/net/tools/quic/test_tools/quic_test_client.cc
@@ -159,19 +159,6 @@
 
 QuicTestClient::QuicTestClient(IPEndPoint server_address,
                                const string& server_hostname,
-                               const QuicVersionVector& supported_versions)
-    : client_(new MockableQuicClient(server_address,
-                                     QuicServerId(server_hostname,
-                                                  server_address.port(),
-                                                  false,
-                                                  PRIVACY_MODE_DISABLED),
-                                     supported_versions,
-                                     &epoll_server_)) {
-  Initialize(true);
-}
-
-QuicTestClient::QuicTestClient(IPEndPoint server_address,
-                               const string& server_hostname,
                                bool secure,
                                const QuicVersionVector& supported_versions)
     : client_(new MockableQuicClient(server_address,
diff --git a/net/tools/quic/test_tools/quic_test_client.h b/net/tools/quic/test_tools/quic_test_client.h
index c5b7a3b..a1dea9e 100644
--- a/net/tools/quic/test_tools/quic_test_client.h
+++ b/net/tools/quic/test_tools/quic_test_client.h
@@ -64,9 +64,6 @@
  public:
   QuicTestClient(IPEndPoint server_address,
                  const string& server_hostname,
-                 const QuicVersionVector& supported_versions);
-  QuicTestClient(IPEndPoint server_address,
-                 const string& server_hostname,
                  bool secure,
                  const QuicVersionVector& supported_versions);
   QuicTestClient(IPEndPoint server_address,
diff --git a/net/tools/quic/test_tools/quic_test_utils.cc b/net/tools/quic/test_tools/quic_test_utils.cc
index 2477483..40b7e88 100644
--- a/net/tools/quic/test_tools/quic_test_utils.cc
+++ b/net/tools/quic/test_tools/quic_test_utils.cc
@@ -95,7 +95,7 @@
 
 TestSession::TestSession(QuicConnection* connection,
                          const QuicConfig& config)
-    : QuicSession(connection, config),
+    : QuicSession(connection, config, /*is_secure=*/false),
       crypto_stream_(nullptr) {
   InitializeSession();
 }
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
index 2fc58cf..0dcbd25 100755
--- a/net/tools/testserver/testserver.py
+++ b/net/tools/testserver/testserver.py
@@ -1428,7 +1428,6 @@
 
     test_name = "/cross-site"
     if not self._ShouldHandleRequest(test_name):
-      print "CSRH: not handling request for " + test_name
       return False
 
     params = urllib.unquote(self.path[(len(test_name) + 1):])
diff --git a/net/tools/tld_cleanup/tld_cleanup_util_unittest.cc b/net/tools/tld_cleanup/tld_cleanup_util_unittest.cc
index 6b1d02a..6c7cbad 100644
--- a/net/tools/tld_cleanup/tld_cleanup_util_unittest.cc
+++ b/net/tools/tld_cleanup/tld_cleanup_util_unittest.cc
@@ -5,7 +5,6 @@
 #include "net/tools/tld_cleanup/tld_cleanup_util.h"
 
 #include "base/files/file_path.h"
-#include "base/path_service.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace net {
diff --git a/net/base/sdch_dictionary_fetcher.cc b/net/url_request/sdch_dictionary_fetcher.cc
similarity index 93%
rename from net/base/sdch_dictionary_fetcher.cc
rename to net/url_request/sdch_dictionary_fetcher.cc
index 8d08b9a..5806193 100644
--- a/net/base/sdch_dictionary_fetcher.cc
+++ b/net/url_request/sdch_dictionary_fetcher.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "net/base/sdch_dictionary_fetcher.h"
+#include "net/url_request/sdch_dictionary_fetcher.h"
 
 #include <stdint.h>
 
@@ -24,15 +24,14 @@
 namespace net {
 
 SdchDictionaryFetcher::SdchDictionaryFetcher(
-    SdchFetcher::Delegate* consumer,
-    URLRequestContext* context)
+    URLRequestContext* context,
+    const OnDictionaryFetchedCallback& callback)
     : next_state_(STATE_NONE),
       in_loop_(false),
-      consumer_(consumer),
       context_(context),
+      dictionary_fetched_callback_(callback),
       weak_factory_(this) {
   DCHECK(CalledOnValidThread());
-  DCHECK(consumer);
   DCHECK(context);
 }
 
@@ -158,8 +157,8 @@
     return OK;
   }
 
-  current_request_ = context_->CreateRequest(
-      fetch_queue_.front(), IDLE, this, NULL);
+  current_request_ =
+      context_->CreateRequest(fetch_queue_.front(), IDLE, this, NULL);
   current_request_->SetLoadFlags(LOAD_DO_NOT_SEND_COOKIES |
                                  LOAD_DO_NOT_SAVE_COOKIES);
   buffer_ = new IOBuffer(kBufferSize);
@@ -209,8 +208,8 @@
       // without a promise to invoke the callback at some point in the future,
       // so the request is failed.
       SdchManager::SdchErrorRecovery(SdchManager::DICTIONARY_FETCH_READ_FAILED);
-      DLOG(FATAL) <<
-          "URLRequest::Read() returned false without IO pending or error!";
+      DLOG(FATAL)
+          << "URLRequest::Read() returned false without IO pending or error!";
       return ERR_FAILED;
     }
 
@@ -230,7 +229,7 @@
 
   // If the dictionary was successfully fetched, add it to the manager.
   if (rv == OK)
-    consumer_->AddSdchDictionary(dictionary_, current_request_->url());
+    dictionary_fetched_callback_.Run(dictionary_, current_request_->url());
 
   current_request_.reset();
   buffer_ = NULL;
diff --git a/net/base/sdch_dictionary_fetcher.h b/net/url_request/sdch_dictionary_fetcher.h
similarity index 63%
rename from net/base/sdch_dictionary_fetcher.h
rename to net/url_request/sdch_dictionary_fetcher.h
index d74f643..5b6f269 100644
--- a/net/base/sdch_dictionary_fetcher.h
+++ b/net/url_request/sdch_dictionary_fetcher.h
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// TODO(rdsmith): This class needs to be moved out to the net/ embedder and
-// hooked into whatever mechanisms the embedder uses for authentication.
-// Specifically, this class needs methods overriding
-// URLRequest::Delegate::{OnAuthRequired,OnCertificateRequested} and can't
-// implement them at the net/ layer.
+// TODO(rdsmith): This class needs to delegate URLRequest::Delegate methods
+// to the net/ embedder for correct implementation of authentication.
+// Specifically, this class needs the embedder to provide functionality
+// corresponding to
+// URLRequest::Delegate::{OnAuthRequired,OnCertificateRequested}.
 
-#ifndef NET_BASE_SDCH_DICTIONARY_FETCHER_H_
-#define NET_BASE_SDCH_DICTIONARY_FETCHER_H_
+#ifndef NET_URL_REQUEST_SDCH_DICTIONARY_FETCHER_H_
+#define NET_URL_REQUEST_SDCH_DICTIONARY_FETCHER_H_
 
 #include <queue>
 #include <set>
@@ -27,25 +27,31 @@
 class URLRequest;
 class URLRequestThrottlerEntryInterface;
 
-// This class implements the SdchFetcher interface. It queues requests
-// for dictionaries and dispatches them serially, implementing
-// the URLRequest::Delegate interface to handle callbacks (but see above
-// TODO). It tracks all requests, only attempting to fetch each dictionary
-// once.
-class NET_EXPORT SdchDictionaryFetcher
-    : public SdchFetcher,
-      public URLRequest::Delegate,
-      public base::NonThreadSafe {
+// This class is used by embedder SDCH policy object to fetch
+// dictionaries. It queues requests for dictionaries and dispatches
+// them serially, implementing the URLRequest::Delegate interface to
+// handle callbacks (but see above TODO). It tracks all requests, only
+// attempting to fetch each dictionary once.
+class NET_EXPORT SdchDictionaryFetcher : public URLRequest::Delegate,
+                                         public base::NonThreadSafe {
  public:
-  // The consumer must guarantee that |*consumer| and |*context| outlive
-  // this object.
-  SdchDictionaryFetcher(SdchFetcher::Delegate* consumer,
-                        URLRequestContext* context);
+  typedef base::Callback<void(const std::string& dictionary_text,
+                              const GURL& dictionary_url)>
+      OnDictionaryFetchedCallback;
+
+  // The consumer must guarantee that |*context| outlives this object.
+  // |callback| will be called on successful dictionary fetch
+  // requested through Schedule().  |callback| will not be called
+  // after object destruction.
+  SdchDictionaryFetcher(URLRequestContext* context,
+                        const OnDictionaryFetchedCallback& callback);
   ~SdchDictionaryFetcher() override;
 
-  // Implementation of SdchFetcher methods.
-  void Schedule(const GURL& dictionary_url) override;
-  void Cancel() override;
+  // Request a new dictionary fetch.
+  void Schedule(const GURL& dictionary_url);
+
+  // Cancel any in-progress requests.
+  void Cancel();
 
   // Implementation of URLRequest::Delegate methods.
   void OnResponseStarted(URLRequest* request) override;
@@ -70,8 +76,6 @@
   State next_state_;
   bool in_loop_;
 
-  SdchFetcher::Delegate* const consumer_;
-
   // A queue of URLs that are being used to download dictionaries.
   std::queue<GURL> fetch_queue_;
 
@@ -100,7 +104,9 @@
 
   // Store the URLRequestContext associated with the owning SdchManager for
   // use while fetching.
-  URLRequestContext* context_;
+  URLRequestContext* const context_;
+
+  const OnDictionaryFetchedCallback dictionary_fetched_callback_;
 
   base::WeakPtrFactory<SdchDictionaryFetcher> weak_factory_;
 
@@ -109,4 +115,4 @@
 
 }  // namespace net
 
-#endif  // NET_BASE_SDCH_DICTIONARY_FETCHER_H_
+#endif  // NET_URL_REQUEST_SDCH_DICTIONARY_FETCHER_H_
diff --git a/net/base/sdch_dictionary_fetcher_unittest.cc b/net/url_request/sdch_dictionary_fetcher_unittest.cc
similarity index 74%
rename from net/base/sdch_dictionary_fetcher_unittest.cc
rename to net/url_request/sdch_dictionary_fetcher_unittest.cc
index a8b814e..0febd7e 100644
--- a/net/base/sdch_dictionary_fetcher_unittest.cc
+++ b/net/url_request/sdch_dictionary_fetcher_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "net/base/sdch_dictionary_fetcher.h"
+#include "net/url_request/sdch_dictionary_fetcher.h"
 
 #include <string>
 
+#include "base/bind.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/thread_task_runner_handle.h"
@@ -31,8 +32,8 @@
   static void AddUrlHandler() {
     net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
     jobs_requested_ = 0;
-    filter->AddHostnameHandler("http", kTestDomain,
-                               &URLRequestSpecifiedResponseJob::Factory);
+    filter->AddHostnameHandler(
+        "http", kTestDomain, &URLRequestSpecifiedResponseJob::Factory);
   }
 
   static void RemoveUrlHandler() {
@@ -41,17 +42,17 @@
     jobs_requested_ = 0;
   }
 
-  static URLRequestJob* Factory(
-      URLRequest* request,
-      net::NetworkDelegate* network_delegate,
-      const std::string& scheme) {
+  static URLRequestJob* Factory(URLRequest* request,
+                                net::NetworkDelegate* network_delegate,
+                                const std::string& scheme) {
     ++jobs_requested_;
     return new URLRequestSpecifiedResponseJob(request, network_delegate);
   }
 
   static std::string ExpectedResponseForURL(const GURL& url) {
     return base::StringPrintf("Response for %s\n%s\nEnd Response for %s\n",
-                              url.spec().c_str(), kSampleBufferContext,
+                              url.spec().c_str(),
+                              kSampleBufferContext,
                               url.spec().c_str());
   }
 
@@ -73,21 +74,32 @@
 
 int URLRequestSpecifiedResponseJob::jobs_requested_(0);
 
-class SdchTestDelegate : public SdchFetcher::Delegate {
+class SdchDictionaryFetcherTest : public ::testing::Test {
  public:
   struct DictionaryAdditions {
     DictionaryAdditions(const std::string& dictionary_text,
                         const GURL& dictionary_url)
-        : dictionary_text(dictionary_text),
-          dictionary_url(dictionary_url) {}
-
+        : dictionary_text(dictionary_text), dictionary_url(dictionary_url) {}
 
     std::string dictionary_text;
     GURL dictionary_url;
   };
 
-  void AddSdchDictionary(const std::string& dictionary_text,
-                         const GURL& dictionary_url) override {
+  SdchDictionaryFetcherTest() {
+    URLRequestSpecifiedResponseJob::AddUrlHandler();
+    context_.reset(new TestURLRequestContext);
+    fetcher_.reset(new SdchDictionaryFetcher(
+        context_.get(),
+        base::Bind(&SdchDictionaryFetcherTest::OnDictionaryFetched,
+                   base::Unretained(this))));
+  }
+
+  ~SdchDictionaryFetcherTest() {
+    URLRequestSpecifiedResponseJob::RemoveUrlHandler();
+  }
+
+  void OnDictionaryFetched(const std::string& dictionary_text,
+                           const GURL& dictionary_url) {
     dictionary_additions.push_back(
         DictionaryAdditions(dictionary_text, dictionary_url));
   }
@@ -97,33 +109,7 @@
     dictionary_additions.clear();
   }
 
- private:
-  std::vector<DictionaryAdditions> dictionary_additions;
-};
-
-class SdchDictionaryFetcherTest : public ::testing::Test {
- public:
-  SdchDictionaryFetcherTest() {}
-
-  void SetUp() override {
-    DCHECK(!fetcher_.get());
-
-    URLRequestSpecifiedResponseJob::AddUrlHandler();
-    fetcher_delegate_.reset(new SdchTestDelegate);
-    context_.reset(new TestURLRequestContext);
-    fetcher_.reset(new SdchDictionaryFetcher(
-        fetcher_delegate_.get(), context_.get()));
-  }
-
-  void TearDown() override {
-    URLRequestSpecifiedResponseJob::RemoveUrlHandler();
-    fetcher_.reset();
-    context_.reset();
-    fetcher_delegate_.reset();
-  }
-
   SdchDictionaryFetcher* fetcher() { return fetcher_.get(); }
-  SdchTestDelegate* manager() { return fetcher_delegate_.get(); }
 
   // May not be called outside the SetUp()/TearDown() interval.
   int JobsRequested() {
@@ -139,9 +125,9 @@
   }
 
  private:
-  scoped_ptr<SdchTestDelegate> fetcher_delegate_;
   scoped_ptr<TestURLRequestContext> context_;
   scoped_ptr<SdchDictionaryFetcher> fetcher_;
+  std::vector<DictionaryAdditions> dictionary_additions;
 };
 
 // Schedule a fetch and make sure it happens.
@@ -151,11 +137,12 @@
 
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, JobsRequested());
-  std::vector<SdchTestDelegate::DictionaryAdditions> additions;
-  manager()->GetDictionaryAdditions(&additions);
+  std::vector<DictionaryAdditions> additions;
+  GetDictionaryAdditions(&additions);
   ASSERT_EQ(1u, additions.size());
-  EXPECT_EQ(URLRequestSpecifiedResponseJob::ExpectedResponseForURL(
-      dictionary_url), additions[0].dictionary_text);
+  EXPECT_EQ(
+      URLRequestSpecifiedResponseJob::ExpectedResponseForURL(dictionary_url),
+      additions[0].dictionary_text);
 }
 
 // Multiple fetches of the same URL should result in only one request.
@@ -167,11 +154,12 @@
   base::RunLoop().RunUntilIdle();
 
   EXPECT_EQ(1, JobsRequested());
-  std::vector<SdchTestDelegate::DictionaryAdditions> additions;
-  manager()->GetDictionaryAdditions(&additions);
+  std::vector<DictionaryAdditions> additions;
+  GetDictionaryAdditions(&additions);
   ASSERT_EQ(1u, additions.size());
-  EXPECT_EQ(URLRequestSpecifiedResponseJob::ExpectedResponseForURL(
-      dictionary_url), additions[0].dictionary_text);
+  EXPECT_EQ(
+      URLRequestSpecifiedResponseJob::ExpectedResponseForURL(dictionary_url),
+      additions[0].dictionary_text);
 }
 
 // A cancel should result in no actual requests being generated.
@@ -189,5 +177,4 @@
   // Synchronous execution may have resulted in a single job being scheduled.
   EXPECT_GE(1, JobsRequested());
 }
-
 }
diff --git a/net/url_request/url_fetcher_impl_unittest.cc b/net/url_request/url_fetcher_impl_unittest.cc
index 9b36621..fce7ace 100644
--- a/net/url_request/url_fetcher_impl_unittest.cc
+++ b/net/url_request/url_fetcher_impl_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/message_loop/message_loop_proxy.h"
+#include "base/path_service.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/thread.h"
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 7ae48e8..613d9bb 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -13,6 +13,7 @@
 #include "base/memory/singleton.h"
 #include "base/message_loop/message_loop.h"
 #include "base/metrics/stats_counters.h"
+#include "base/profiler/scoped_tracker.h"
 #include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/synchronization/lock.h"
@@ -832,6 +833,11 @@
     RestartWithJob(job);
   } else if (delegate_) {
     OnCallToDelegate();
+
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequest::Delegate::OnReceivedRedirect"));
     delegate_->OnReceivedRedirect(this, redirect_info, defer_redirect);
     // |this| may be have been destroyed here.
   }
@@ -840,7 +846,14 @@
 void URLRequest::NotifyBeforeNetworkStart(bool* defer) {
   if (delegate_ && !notified_before_network_start_) {
     OnCallToDelegate();
-    delegate_->OnBeforeNetworkStart(this, defer);
+    {
+      // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is
+      // fixed.
+      tracked_objects::ScopedTracker tracking_profile(
+          FROM_HERE_WITH_EXPLICIT_FUNCTION(
+              "423948 URLRequest::Delegate::OnBeforeNetworkStart"));
+      delegate_->OnBeforeNetworkStart(this, defer);
+    }
     if (!*defer)
       OnCallToDelegateComplete();
     notified_before_network_start_ = true;
@@ -881,6 +894,11 @@
         NotifyRequestCompleted();
 
       OnCallToDelegate();
+      // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is
+      // fixed.
+      tracked_objects::ScopedTracker tracking_profile(
+          FROM_HERE_WITH_EXPLICIT_FUNCTION(
+              "423948 URLRequest::Delegate::OnResponseStarted"));
       delegate_->OnResponseStarted(this);
       // Nothing may appear below this line as OnResponseStarted may delete
       // |this|.
@@ -1097,8 +1115,14 @@
     case NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION:
       // Defer to the URLRequest::Delegate, since the NetworkDelegate
       // didn't take an action.
-      if (delegate_)
+      if (delegate_) {
+        // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is
+        // fixed.
+        tracked_objects::ScopedTracker tracking_profile(
+            FROM_HERE_WITH_EXPLICIT_FUNCTION(
+                "423948 URLRequest::Delegate::OnAuthRequired"));
         delegate_->OnAuthRequired(this, auth_info.get());
+      }
       break;
 
     case NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH:
@@ -1117,14 +1141,24 @@
 
 void URLRequest::NotifyCertificateRequested(
     SSLCertRequestInfo* cert_request_info) {
-  if (delegate_)
+  if (delegate_) {
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequest::Delegate::OnCertificateRequested"));
     delegate_->OnCertificateRequested(this, cert_request_info);
+  }
 }
 
 void URLRequest::NotifySSLCertificateError(const SSLInfo& ssl_info,
                                            bool fatal) {
-  if (delegate_)
+  if (delegate_) {
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequest::Delegate::OnSSLCertificateError"));
     delegate_->OnSSLCertificateError(this, ssl_info, fatal);
+  }
 }
 
 bool URLRequest::CanGetCookies(const CookieList& cookie_list) const {
@@ -1165,8 +1199,13 @@
   if (bytes_read > 0 && !was_cached())
     NetworkChangeNotifier::NotifyDataReceived(*this, bytes_read);
 
-  if (delegate_)
+  if (delegate_) {
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequest::Delegate::OnReadCompleted"));
     delegate_->OnReadCompleted(this, bytes_read);
+  }
 
   // Nothing below this line as OnReadCompleted may delete |this|.
 }
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index a53bbab..4261b92 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -13,6 +13,7 @@
 #include "base/message_loop/message_loop.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/histogram.h"
+#include "base/profiler/scoped_tracker.h"
 #include "base/rand_util.h"
 #include "base/strings/string_util.h"
 #include "base/time/time.h"
@@ -334,7 +335,7 @@
       // Resolve suggested URL relative to request url.
       GURL sdch_dictionary_url = request_->url().Resolve(url_text);
       if (sdch_dictionary_url.is_valid()) {
-        sdch_manager->FetchDictionary(request_->url(), sdch_dictionary_url);
+        sdch_manager->OnGetDictionary(request_->url(), sdch_dictionary_url);
       }
     }
   }
@@ -783,6 +784,11 @@
 }
 
 void URLRequestHttpJob::OnStartCompleted(int result) {
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/424359 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "424359 URLRequestHttpJob::OnStartCompleted"));
+
   RecordTimer();
 
   // If the request was destroyed, then there is no more work to do.
@@ -886,6 +892,11 @@
 }
 
 void URLRequestHttpJob::OnReadCompleted(int result) {
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/424359 is fixed.
+  tracked_objects::ScopedTracker tracking_profile(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "424359 URLRequestHttpJob::OnReadCompleted"));
+
   read_in_progress_ = false;
 
   if (ShouldFixMismatchedContentLength(result))
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc
index b8892c7..84fd7c0 100644
--- a/net/url_request/url_request_http_job_unittest.cc
+++ b/net/url_request/url_request_http_job_unittest.cc
@@ -52,7 +52,7 @@
       : req_(context_.CreateRequest(GURL("http://www.example.com"),
                                     DEFAULT_PRIORITY,
                                     &delegate_,
-                                    NULL)) {
+                                    nullptr)) {
     context_.set_http_transaction_factory(&network_layer_);
   }
 
@@ -186,7 +186,7 @@
 // constructor is called.
 class URLRequestHttpJobWebSocketTestBase : public ::testing::Test {
  protected:
-  URLRequestHttpJobWebSocketTestBase() : socket_data_(NULL, 0, NULL, 0),
+  URLRequestHttpJobWebSocketTestBase() : socket_data_(nullptr, 0, nullptr, 0),
                                          context_(true) {
     // A Network Delegate is required for the WebSocketHandshakeStreamBase
     // object to be passed on to the HttpNetworkTransaction.
@@ -212,7 +212,7 @@
       : req_(context_.CreateRequest(GURL("ws://www.example.com"),
                                     DEFAULT_PRIORITY,
                                     &delegate_,
-                                    NULL)) {
+                                    nullptr)) {
     // The TestNetworkDelegate expects a call to NotifyBeforeURLRequest before
     // anything else happens.
     GURL url("ws://localhost/");
@@ -304,6 +304,12 @@
 
   void SetPriority(RequestPriority priority) override {}
 
+  UploadProgress GetUploadProgress() const override {
+    return UploadProgress();
+  }
+
+  HttpStream* RenewStreamForAuth() override { return nullptr; }
+
   // Fake implementation of WebSocketHandshakeStreamBase method(s)
   scoped_ptr<WebSocketStream> Upgrade() override {
     return scoped_ptr<WebSocketStream>();
diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc
index 16f7b71..3610195 100644
--- a/net/url_request/url_request_job.cc
+++ b/net/url_request/url_request_job.cc
@@ -326,19 +326,45 @@
   // survival until we can get out of this method.
   scoped_refptr<URLRequestJob> self_preservation(this);
 
-  if (request_)
+  if (request_) {
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile1(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 1"));
+
     request_->OnHeadersComplete();
+  }
+
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile2(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 URLRequestJob::NotifyHeadersComplete 2"));
 
   GURL new_location;
   int http_status_code;
   if (IsRedirectResponse(&new_location, &http_status_code)) {
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile3(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 3"));
+
     // Redirect response bodies are not read. Notify the transaction
     // so it does not treat being stopped as an error.
     DoneReadingRedirectResponse();
 
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile4(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 4"));
+
     RedirectInfo redirect_info =
         ComputeRedirectInfo(new_location, http_status_code);
 
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile5(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 5"));
+
     bool defer_redirect = false;
     request_->NotifyReceivedRedirect(redirect_info, &defer_redirect);
 
@@ -347,6 +373,11 @@
     if (!request_ || !request_->has_delegate())
       return;
 
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile6(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 6"));
+
     // If we were not cancelled, then maybe follow the redirect.
     if (request_->status().is_success()) {
       if (defer_redirect) {
@@ -357,8 +388,19 @@
       return;
     }
   } else if (NeedsAuth()) {
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile7(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 7"));
+
     scoped_refptr<AuthChallengeInfo> auth_info;
     GetAuthChallengeInfo(&auth_info);
+
+    // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+    tracked_objects::ScopedTracker tracking_profile8(
+        FROM_HERE_WITH_EXPLICIT_FUNCTION(
+            "423948 URLRequestJob::NotifyHeadersComplete 8"));
+
     // Need to check for a NULL auth_info because the server may have failed
     // to send a challenge with the 401 response.
     if (auth_info.get()) {
@@ -368,6 +410,11 @@
     }
   }
 
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile9(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 URLRequestJob::NotifyHeadersComplete 9"));
+
   has_handled_response_ = true;
   if (request_->status().is_success())
     filter_.reset(SetupFilter());
@@ -379,6 +426,11 @@
       base::StringToInt64(content_length, &expected_content_size_);
   }
 
+  // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
+  tracked_objects::ScopedTracker tracking_profile10(
+      FROM_HERE_WITH_EXPLICIT_FUNCTION(
+          "423948 URLRequestJob::NotifyHeadersComplete 10"));
+
   request_->NotifyResponseStarted();
 }
 
diff --git a/net/websockets/websocket_basic_handshake_stream.cc b/net/websockets/websocket_basic_handshake_stream.cc
index 6255d8f..769b802 100644
--- a/net/websockets/websocket_basic_handshake_stream.cc
+++ b/net/websockets/websocket_basic_handshake_stream.cc
@@ -127,7 +127,7 @@
 GetHeaderResult GetSingleHeaderValue(const HttpResponseHeaders* headers,
                                      const base::StringPiece& name,
                                      std::string* value) {
-  void* state = NULL;
+  void* state = nullptr;
   size_t num_values = 0;
   std::string temp_value;
   while (headers->EnumerateHeader(&state, name, &temp_value)) {
@@ -211,7 +211,7 @@
     const std::vector<std::string>& requested_sub_protocols,
     std::string* sub_protocol,
     std::string* failure_message) {
-  void* state = NULL;
+  void* state = nullptr;
   std::string value;
   base::hash_set<std::string> requested_set(requested_sub_protocols.begin(),
                                             requested_sub_protocols.end());
@@ -329,7 +329,7 @@
                         std::string* extensions,
                         std::string* failure_message,
                         WebSocketExtensionParams* params) {
-  void* state = NULL;
+  void* state = nullptr;
   std::string value;
   std::vector<std::string> accepted_extensions;
   // TODO(ricea): If adding support for additional extensions, generalise this
@@ -380,7 +380,7 @@
     std::string* failure_message)
     : state_(connection.release(), using_proxy),
       connect_delegate_(connect_delegate),
-      http_response_info_(NULL),
+      http_response_info_(nullptr),
       requested_sub_protocols_(requested_sub_protocols),
       requested_extensions_(requested_extensions),
       failure_message_(failure_message) {
@@ -530,6 +530,15 @@
   // gone, then copy whatever has happened there over here.
 }
 
+UploadProgress WebSocketBasicHandshakeStream::GetUploadProgress() const {
+  return UploadProgress();
+}
+
+HttpStream* WebSocketBasicHandshakeStream::RenewStreamForAuth() {
+  // Return null because we don't support renewing the stream.
+  return nullptr;
+}
+
 scoped_ptr<WebSocketStream> WebSocketBasicHandshakeStream::Upgrade() {
   // The HttpStreamParser object has a pointer to our ClientSocketHandle. Make
   // sure it does not touch it again before it is destroyed.
diff --git a/net/websockets/websocket_basic_handshake_stream.h b/net/websockets/websocket_basic_handshake_stream.h
index 9508ec7..67458b0 100644
--- a/net/websockets/websocket_basic_handshake_stream.h
+++ b/net/websockets/websocket_basic_handshake_stream.h
@@ -63,6 +63,9 @@
   bool IsSpdyHttpStream() const override;
   void Drain(HttpNetworkSession* session) override;
   void SetPriority(RequestPriority priority) override;
+  UploadProgress GetUploadProgress() const override;
+  HttpStream* RenewStreamForAuth() override;
+
 
   // This is called from the top level once correct handshake response headers
   // have been received. It creates an appropriate subclass of WebSocketStream
diff --git a/net/websockets/websocket_channel.cc b/net/websockets/websocket_channel.cc
index 70c080f..598b5e6 100644
--- a/net/websockets/websocket_channel.cc
+++ b/net/websockets/websocket_channel.cc
@@ -582,7 +582,8 @@
     // |this| has been deleted.
     return;
   }
-  ignore_result(event_interface_->OnFailChannel(message_copy));
+  ChannelState result = event_interface_->OnFailChannel(message_copy);
+  DCHECK_EQ(CHANNEL_DELETED, result);
   // |this| has been deleted.
 }
 
@@ -1000,7 +1001,9 @@
   // handshake.
   stream_->Close();
   SetState(CLOSED);
-  return event_interface_->OnFailChannel(message);
+  ChannelState result = event_interface_->OnFailChannel(message);
+  DCHECK_EQ(CHANNEL_DELETED, result);
+  return result;
 }
 
 ChannelState WebSocketChannel::SendClose(uint16 code,
diff --git a/net/websockets/websocket_handshake_stream_base.h b/net/websockets/websocket_handshake_stream_base.h
index 6ad0f6b..a858feb 100644
--- a/net/websockets/websocket_handshake_stream_base.h
+++ b/net/websockets/websocket_handshake_stream_base.h
@@ -15,7 +15,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/supports_user_data.h"
-#include "net/http/http_stream_base.h"
+#include "net/http/http_stream.h"
 #include "net/url_request/websocket_handshake_userdata_key.h"
 #include "net/websockets/websocket_stream.h"
 
@@ -28,7 +28,7 @@
 // WebSocketBasicHandshakeStream.  net/http code uses this interface to handle
 // WebSocketBasicHandshakeStream when it needs to be treated differently from
 // HttpStreamBase.
-class NET_EXPORT WebSocketHandshakeStreamBase : public HttpStreamBase {
+class NET_EXPORT WebSocketHandshakeStreamBase : public HttpStream {
  public:
   // An object that stores data needed for the creation of a
   // WebSocketBasicHandshakeStream object. A new CreateHelper is used for each
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
index 5dd70ac..a57b6a1 100644
--- a/skia/BUILD.gn
+++ b/skia/BUILD.gn
@@ -9,7 +9,7 @@
 }
 
 skia_support_gpu = !is_ios
-skia_support_pdf = !is_ios && printing_mode != 0
+skia_support_pdf = !is_ios && (enable_basic_printing || enable_print_preview)
 
 # The list of Skia defines that are to be set for chromium.
 gypi_skia_defines = exec_script(
@@ -422,7 +422,7 @@
   if (is_win) {
     sources -= [ "ext/SkThread_chrome.cc" ]
   }
-  if (is_android && printing_mode == 0) {
+  if (is_android && (!enable_basic_printing && !enable_print_preview)) {
     sources -= [
       "ext/skia_utils_base.cc",
       "ext/vector_platform_device_skia.cc"
diff --git a/skia/skia_chrome.gypi b/skia/skia_chrome.gypi
index f023b28..0f97556 100644
--- a/skia/skia_chrome.gypi
+++ b/skia/skia_chrome.gypi
@@ -87,12 +87,13 @@
     'ext/vector_platform_device_skia.h',
   ],
   'conditions': [
-    [ 'OS == "android" and enable_printing == 0', {
+    [ 'OS == "android" and '
+      'enable_basic_printing==0 and enable_print_preview==0', {
       'sources!': [
         'ext/skia_utils_base.cc',
       ],
     }],
-    [ 'enable_printing == 0', {
+    [ 'enable_basic_printing==0 and enable_print_preview==0', {
       'sources!': [
         'ext/vector_platform_device_skia.cc',
       ],
diff --git a/skia/skia_common.gypi b/skia/skia_common.gypi
index ff42074..13a4974 100644
--- a/skia/skia_common.gypi
+++ b/skia/skia_common.gypi
@@ -134,7 +134,7 @@
         }, {
           'skia_support_gpu': 1,
         }],
-        ['OS=="ios" or enable_printing == 0', {
+        ['OS=="ios" or (enable_basic_printing==0 and enable_print_preview==0)', {
           'skia_support_pdf': 0,
         }, {
           'skia_support_pdf': 1,
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index 3d656b3..c1bdf11 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -1,5 +1,5 @@
 {
-  "Mac10.6 Tests (1)": {
+  "Mac10.6 Tests": {
     "gtest_tests": [
       "accessibility_unittests",
       "app_list_unittests",
@@ -97,7 +97,7 @@
       }
     ]
   },
-  "Mac10.7 Tests (1)": {
+  "Mac10.8 Tests": {
     "gtest_tests": [
       "accessibility_unittests",
       "app_list_unittests",
@@ -195,7 +195,7 @@
       }
     ]
   },
-  "Mac 10.6 Tests (dbg)(1)": {
+  "Mac10.9 Tests": {
     "gtest_tests": [
       "accessibility_unittests",
       "app_list_unittests",
@@ -280,20 +280,12 @@
     ],
     "scripts": [
       {
-        "name": "telemetry_unittests",
-        "script": "telemetry_unittests.py"
-      },
-      {
-        "name": "telemetry_perf_unittests",
-        "script": "telemetry_perf_unittests.py"
-      },
-      {
         "name": "nacl_integration",
         "script": "nacl_integration.py"
       }
     ]
   },
-  "Mac 10.7 Tests (dbg)(1)": {
+  "Mac10.9 Tests (dbg)": {
     "gtest_tests": [
       "accessibility_unittests",
       "app_list_unittests",
@@ -379,14 +371,6 @@
     ],
     "scripts": [
       {
-        "name": "telemetry_unittests",
-        "script": "telemetry_unittests.py"
-      },
-      {
-        "name": "telemetry_perf_unittests",
-        "script": "telemetry_perf_unittests.py"
-      },
-      {
         "name": "nacl_integration",
         "script": "nacl_integration.py"
       }
diff --git a/testing/buildbot/chromium_trybot.json b/testing/buildbot/chromium_trybot.json
index e0f6955..9c7f5c9 100644
--- a/testing/buildbot/chromium_trybot.json
+++ b/testing/buildbot/chromium_trybot.json
@@ -118,10 +118,6 @@
     "mojo_public_environment_unittests",
     "mojo_public_system_unittests",
     "mojo_public_utility_unittests",
-    {
-      "test": "mojo_application_manager_unittests",
-      "platforms": ["linux"]
-    },
     "mojo_system_unittests",
     {
       "test": "nacl_loader_unittests",
diff --git a/testing/chromoting/chromoting_integration_tests.isolate b/testing/chromoting/chromoting_integration_tests.isolate
index b0c2d00..db21d82 100644
--- a/testing/chromoting/chromoting_integration_tests.isolate
+++ b/testing/chromoting/chromoting_integration_tests.isolate
@@ -49,6 +49,23 @@
         ],
       },
     }],
+    ['OS=="win"', {
+      'variables': {
+        'files': [
+          '<(PRODUCT_DIR)/chrome_elf.dll',
+          '<(PRODUCT_DIR)/ffmpegsumo.dll',
+        ],
+      },
+    }],
+    ['OS=="mac"', {
+      'variables': {
+        'files': [
+          '<(PRODUCT_DIR)/<(mac_product_name).app/',
+          '<(PRODUCT_DIR)/exif.so',
+          '<(PRODUCT_DIR)/ffmpegsumo.so',
+        ],
+      },
+    }],
     ['OS=="mac" or OS=="win"', {
       'variables': {
         'command': [
diff --git a/third_party/boringssl/BUILD.gn b/third_party/boringssl/BUILD.gn
index 5dffa65..ccd8424 100644
--- a/third_party/boringssl/BUILD.gn
+++ b/third_party/boringssl/BUILD.gn
@@ -25,11 +25,16 @@
     "scope",
     [ "//third_party/boringssl/boringssl.gypi" ])
 
-# Win32's assembly is built by Yasm. The other ports use the platform assembler.
-if (cpu_arch == "x86" && is_win) {
+# Windows' assembly is built with Yasm. The other platforms use the platform
+# assembler.
+if (is_win) {
   import("//third_party/yasm/yasm_assemble.gni")
   yasm_assemble("boringssl_asm") {
-    sources = gypi_values.boringssl_win_x86_sources
+    if (cpu_arch == "x64") {
+      sources = gypi_values.boringssl_win_x86_64_sources
+    } else if (cpu_arch == "x86") {
+      sources = gypi_values.boringssl_win_x86_sources
+    }
   }
 }
 
@@ -61,13 +66,19 @@
     "src/crypto",
   ]
 
+  if (is_win) {
+    # TODO(davidben): Fix size_t truncations in BoringSSL.
+    # https://crbug.com/429039
+    cflags += [ "/wd4267"]
+  }
+
   if (cpu_arch == "x64") {
     if (is_mac) {
       sources += gypi_values.boringssl_mac_x86_64_sources
     } else if (is_linux || is_android) {
       sources += gypi_values.boringssl_linux_x86_64_sources
     } else if (is_win) {
-      sources += gypi_values.boringssl_win_x86_64_sources
+      deps += [ ":boringssl_asm" ]
     } else {
       defines += [ "OPENSSL_NO_ASM" ]
     }
diff --git a/third_party/boringssl/boringssl.gyp b/third_party/boringssl/boringssl.gyp
index c3760c0..d0b716a 100644
--- a/third_party/boringssl/boringssl.gyp
+++ b/third_party/boringssl/boringssl.gyp
@@ -17,6 +17,9 @@
         'BORINGSSL_IMPLEMENTATION',
         'BORINGSSL_NO_STATIC_INITIALIZER',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
       'conditions': [
         ['component == "shared_library"', {
           'defines': [
@@ -36,8 +39,8 @@
             }],
             ['OS == "win"', {
               'sources': [ '<@(boringssl_win_x86_sources)' ],
-              # Win32 is built with Yasm. The other ports use the platform
-              # assembler.
+              # Windows' assembly is built with Yasm. The other platforms use
+              # the platform assembler.
               'variables': {
                 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/boringssl',
               },
@@ -60,6 +63,14 @@
             }],
             ['OS == "win"', {
               'sources': [ '<@(boringssl_win_x86_64_sources)' ],
+              # Windows' assembly is built with Yasm. The other platforms use
+              # the platform assembler.
+              'variables': {
+                'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/boringssl',
+              },
+              'includes': [
+                '../yasm/yasm_compile.gypi',
+              ],
             }],
             ['OS != "mac" and OS != "linux" and OS != "win" and OS != "android"', {
               'defines': [ 'OPENSSL_NO_ASM' ],
diff --git a/third_party/boringssl/boringssl_tests.gypi b/third_party/boringssl/boringssl_tests.gypi
index 04f0c43..3f7cd53 100644
--- a/third_party/boringssl/boringssl_tests.gypi
+++ b/third_party/boringssl/boringssl_tests.gypi
@@ -15,6 +15,9 @@
       'sources': [
         'src/crypto/base64/base64_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_bio_test',
@@ -25,6 +28,9 @@
       'sources': [
         'src/crypto/bio/bio_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_bn_test',
@@ -35,6 +41,9 @@
       'sources': [
         'src/crypto/bn/bn_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_bytestring_test',
@@ -45,6 +54,9 @@
       'sources': [
         'src/crypto/bytestring/bytestring_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_aead_test',
@@ -55,6 +67,9 @@
       'sources': [
         'src/crypto/cipher/aead_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_cipher_test',
@@ -65,6 +80,9 @@
       'sources': [
         'src/crypto/cipher/cipher_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_dh_test',
@@ -75,6 +93,9 @@
       'sources': [
         'src/crypto/dh/dh_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_dsa_test',
@@ -85,6 +106,9 @@
       'sources': [
         'src/crypto/dsa/dsa_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_example_mul',
@@ -95,6 +119,9 @@
       'sources': [
         'src/crypto/ec/example_mul.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_ecdsa_test',
@@ -105,6 +132,9 @@
       'sources': [
         'src/crypto/ecdsa/ecdsa_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_err_test',
@@ -115,16 +145,22 @@
       'sources': [
         'src/crypto/err/err_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
-      'target_name': 'boringssl_example_sign',
+      'target_name': 'boringssl_evp_test',
       'type': 'executable',
       'dependencies': [
         'boringssl.gyp:boringssl',
       ],
       'sources': [
-        'src/crypto/evp/example_sign.c',
+        'src/crypto/evp/evp_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_hmac_test',
@@ -135,6 +171,9 @@
       'sources': [
         'src/crypto/hmac/hmac_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_lhash_test',
@@ -145,6 +184,9 @@
       'sources': [
         'src/crypto/lhash/lhash_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_md5_test',
@@ -155,6 +197,9 @@
       'sources': [
         'src/crypto/md5/md5_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_gcm_test',
@@ -165,6 +210,9 @@
       'sources': [
         'src/crypto/modes/gcm_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_pkcs12_test',
@@ -175,6 +223,9 @@
       'sources': [
         'src/crypto/pkcs8/pkcs12_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_rsa_test',
@@ -185,6 +236,9 @@
       'sources': [
         'src/crypto/rsa/rsa_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_sha1_test',
@@ -195,6 +249,9 @@
       'sources': [
         'src/crypto/sha/sha1_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_pkcs7_test',
@@ -205,6 +262,9 @@
       'sources': [
         'src/crypto/x509/pkcs7_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_pqueue_test',
@@ -215,6 +275,9 @@
       'sources': [
         'src/ssl/pqueue/pqueue_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
     {
       'target_name': 'boringssl_ssl_test',
@@ -225,6 +288,9 @@
       'sources': [
         'src/ssl/ssl_test.c',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },
   ],
   'variables': {
@@ -239,8 +305,8 @@
       'boringssl_dsa_test',
       'boringssl_ecdsa_test',
       'boringssl_err_test',
+      'boringssl_evp_test',
       'boringssl_example_mul',
-      'boringssl_example_sign',
       'boringssl_gcm_test',
       'boringssl_hmac_test',
       'boringssl_lhash_test',
diff --git a/third_party/boringssl/boringssl_unittest.cc b/third_party/boringssl/boringssl_unittest.cc
index b028921..1a62cac 100644
--- a/third_party/boringssl/boringssl_unittest.cc
+++ b/third_party/boringssl/boringssl_unittest.cc
@@ -219,8 +219,8 @@
   TestSimple("example_mul");
 }
 
-TEST(BoringSSL, ExampleSign) {
-  TestSimple("example_sign");
+TEST(BoringSSL, EVP) {
+  TestSimple("evp_test");
 }
 
 TEST(BoringSSL, SSL) {
diff --git a/third_party/boringssl/update_gypi_and_asm.py b/third_party/boringssl/update_gypi_and_asm.py
index 41196a5..751b2db 100644
--- a/third_party/boringssl/update_gypi_and_asm.py
+++ b/third_party/boringssl/update_gypi_and_asm.py
@@ -19,7 +19,7 @@
     ('mac', 'x86', 'macosx', ['-fPIC'], 'S'),
     ('mac', 'x86_64', 'macosx', [''], 'S'),
     ('win', 'x86', 'win32n', [''], 'asm'),
-    ('win', 'x86_64', 'masm', [''], 'asm'),
+    ('win', 'x86_64', 'nasm', [''], 'asm'),
 ]
 
 # NON_PERL_FILES enumerates assembly files that are not processed by the
@@ -220,6 +220,9 @@
       'sources': [
         '%s',
       ],
+      # TODO(davidben): Fix size_t truncations in BoringSSL.
+      # https://crbug.com/429039
+      'msvs_disabled_warnings': [ 4267, ],
     },\n""" % (test_name, test))
       test_names.append(test_name)
 
diff --git a/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm
index 96cbb4b..53394f0 100644
--- a/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm
@@ -1,89 +1,93 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
+
 
 ALIGN	16
-_x86_64_AES_encrypt	PROC PRIVATE
-	xor	eax,DWORD PTR[r15]
-	xor	ebx,DWORD PTR[4+r15]
-	xor	ecx,DWORD PTR[8+r15]
-	xor	edx,DWORD PTR[12+r15]
+_x86_64_AES_encrypt:
+	xor	eax,DWORD[r15]
+	xor	ebx,DWORD[4+r15]
+	xor	ecx,DWORD[8+r15]
+	xor	edx,DWORD[12+r15]
 
-	mov	r13d,DWORD PTR[240+r15]
+	mov	r13d,DWORD[240+r15]
 	sub	r13d,1
-	jmp	$L$enc_loop
+	jmp	NEAR $L$enc_loop
 ALIGN	16
-$L$enc_loop::
+$L$enc_loop:
 
 	movzx	esi,al
 	movzx	edi,bl
 	movzx	ebp,cl
-	mov	r10d,DWORD PTR[rsi*8+r14]
-	mov	r11d,DWORD PTR[rdi*8+r14]
-	mov	r12d,DWORD PTR[rbp*8+r14]
+	mov	r10d,DWORD[rsi*8+r14]
+	mov	r11d,DWORD[rdi*8+r14]
+	mov	r12d,DWORD[rbp*8+r14]
 
 	movzx	esi,bh
 	movzx	edi,ch
 	movzx	ebp,dl
-	xor	r10d,DWORD PTR[3+rsi*8+r14]
-	xor	r11d,DWORD PTR[3+rdi*8+r14]
-	mov	r8d,DWORD PTR[rbp*8+r14]
+	xor	r10d,DWORD[3+rsi*8+r14]
+	xor	r11d,DWORD[3+rdi*8+r14]
+	mov	r8d,DWORD[rbp*8+r14]
 
 	movzx	esi,dh
 	shr	ecx,16
 	movzx	ebp,ah
-	xor	r12d,DWORD PTR[3+rsi*8+r14]
+	xor	r12d,DWORD[3+rsi*8+r14]
 	shr	edx,16
-	xor	r8d,DWORD PTR[3+rbp*8+r14]
+	xor	r8d,DWORD[3+rbp*8+r14]
 
 	shr	ebx,16
-	lea	r15,QWORD PTR[16+r15]
+	lea	r15,[16+r15]
 	shr	eax,16
 
 	movzx	esi,cl
 	movzx	edi,dl
 	movzx	ebp,al
-	xor	r10d,DWORD PTR[2+rsi*8+r14]
-	xor	r11d,DWORD PTR[2+rdi*8+r14]
-	xor	r12d,DWORD PTR[2+rbp*8+r14]
+	xor	r10d,DWORD[2+rsi*8+r14]
+	xor	r11d,DWORD[2+rdi*8+r14]
+	xor	r12d,DWORD[2+rbp*8+r14]
 
 	movzx	esi,dh
 	movzx	edi,ah
 	movzx	ebp,bl
-	xor	r10d,DWORD PTR[1+rsi*8+r14]
-	xor	r11d,DWORD PTR[1+rdi*8+r14]
-	xor	r8d,DWORD PTR[2+rbp*8+r14]
+	xor	r10d,DWORD[1+rsi*8+r14]
+	xor	r11d,DWORD[1+rdi*8+r14]
+	xor	r8d,DWORD[2+rbp*8+r14]
 
-	mov	edx,DWORD PTR[12+r15]
+	mov	edx,DWORD[12+r15]
 	movzx	edi,bh
 	movzx	ebp,ch
-	mov	eax,DWORD PTR[r15]
-	xor	r12d,DWORD PTR[1+rdi*8+r14]
-	xor	r8d,DWORD PTR[1+rbp*8+r14]
+	mov	eax,DWORD[r15]
+	xor	r12d,DWORD[1+rdi*8+r14]
+	xor	r8d,DWORD[1+rbp*8+r14]
 
-	mov	ebx,DWORD PTR[4+r15]
-	mov	ecx,DWORD PTR[8+r15]
+	mov	ebx,DWORD[4+r15]
+	mov	ecx,DWORD[8+r15]
 	xor	eax,r10d
 	xor	ebx,r11d
 	xor	ecx,r12d
 	xor	edx,r8d
 	sub	r13d,1
-	jnz	$L$enc_loop
+	jnz	NEAR $L$enc_loop
 	movzx	esi,al
 	movzx	edi,bl
 	movzx	ebp,cl
-	movzx	r10d,BYTE PTR[2+rsi*8+r14]
-	movzx	r11d,BYTE PTR[2+rdi*8+r14]
-	movzx	r12d,BYTE PTR[2+rbp*8+r14]
+	movzx	r10d,BYTE[2+rsi*8+r14]
+	movzx	r11d,BYTE[2+rdi*8+r14]
+	movzx	r12d,BYTE[2+rbp*8+r14]
 
 	movzx	esi,dl
 	movzx	edi,bh
 	movzx	ebp,ch
-	movzx	r8d,BYTE PTR[2+rsi*8+r14]
-	mov	edi,DWORD PTR[rdi*8+r14]
-	mov	ebp,DWORD PTR[rbp*8+r14]
+	movzx	r8d,BYTE[2+rsi*8+r14]
+	mov	edi,DWORD[rdi*8+r14]
+	mov	ebp,DWORD[rbp*8+r14]
 
-	and	edi,00000ff00h
-	and	ebp,00000ff00h
+	and	edi,0x0000ff00
+	and	ebp,0x0000ff00
 
 	xor	r10d,edi
 	xor	r11d,ebp
@@ -92,11 +96,11 @@
 	movzx	esi,dh
 	movzx	edi,ah
 	shr	edx,16
-	mov	esi,DWORD PTR[rsi*8+r14]
-	mov	edi,DWORD PTR[rdi*8+r14]
+	mov	esi,DWORD[rsi*8+r14]
+	mov	edi,DWORD[rdi*8+r14]
 
-	and	esi,00000ff00h
-	and	edi,00000ff00h
+	and	esi,0x0000ff00
+	and	edi,0x0000ff00
 	shr	ebx,16
 	xor	r12d,esi
 	xor	r8d,edi
@@ -105,13 +109,13 @@
 	movzx	esi,cl
 	movzx	edi,dl
 	movzx	ebp,al
-	mov	esi,DWORD PTR[rsi*8+r14]
-	mov	edi,DWORD PTR[rdi*8+r14]
-	mov	ebp,DWORD PTR[rbp*8+r14]
+	mov	esi,DWORD[rsi*8+r14]
+	mov	edi,DWORD[rdi*8+r14]
+	mov	ebp,DWORD[rbp*8+r14]
 
-	and	esi,000ff0000h
-	and	edi,000ff0000h
-	and	ebp,000ff0000h
+	and	esi,0x00ff0000
+	and	edi,0x00ff0000
+	and	ebp,0x00ff0000
 
 	xor	r10d,esi
 	xor	r11d,edi
@@ -120,13 +124,13 @@
 	movzx	esi,bl
 	movzx	edi,dh
 	movzx	ebp,ah
-	mov	esi,DWORD PTR[rsi*8+r14]
-	mov	edi,DWORD PTR[2+rdi*8+r14]
-	mov	ebp,DWORD PTR[2+rbp*8+r14]
+	mov	esi,DWORD[rsi*8+r14]
+	mov	edi,DWORD[2+rdi*8+r14]
+	mov	ebp,DWORD[2+rbp*8+r14]
 
-	and	esi,000ff0000h
-	and	edi,0ff000000h
-	and	ebp,0ff000000h
+	and	esi,0x00ff0000
+	and	edi,0xff000000
+	and	ebp,0xff000000
 
 	xor	r8d,esi
 	xor	r10d,edi
@@ -134,45 +138,45 @@
 
 	movzx	esi,bh
 	movzx	edi,ch
-	mov	edx,DWORD PTR[((16+12))+r15]
-	mov	esi,DWORD PTR[2+rsi*8+r14]
-	mov	edi,DWORD PTR[2+rdi*8+r14]
-	mov	eax,DWORD PTR[((16+0))+r15]
+	mov	edx,DWORD[((16+12))+r15]
+	mov	esi,DWORD[2+rsi*8+r14]
+	mov	edi,DWORD[2+rdi*8+r14]
+	mov	eax,DWORD[((16+0))+r15]
 
-	and	esi,0ff000000h
-	and	edi,0ff000000h
+	and	esi,0xff000000
+	and	edi,0xff000000
 
 	xor	r12d,esi
 	xor	r8d,edi
 
-	mov	ebx,DWORD PTR[((16+4))+r15]
-	mov	ecx,DWORD PTR[((16+8))+r15]
+	mov	ebx,DWORD[((16+4))+r15]
+	mov	ecx,DWORD[((16+8))+r15]
 	xor	eax,r10d
 	xor	ebx,r11d
 	xor	ecx,r12d
 	xor	edx,r8d
-DB	0f3h,0c3h
-_x86_64_AES_encrypt	ENDP
+DB	0xf3,0xc3
+
 
 ALIGN	16
-_x86_64_AES_encrypt_compact	PROC PRIVATE
-	lea	r8,QWORD PTR[128+r14]
-	mov	edi,DWORD PTR[((0-128))+r8]
-	mov	ebp,DWORD PTR[((32-128))+r8]
-	mov	r10d,DWORD PTR[((64-128))+r8]
-	mov	r11d,DWORD PTR[((96-128))+r8]
-	mov	edi,DWORD PTR[((128-128))+r8]
-	mov	ebp,DWORD PTR[((160-128))+r8]
-	mov	r10d,DWORD PTR[((192-128))+r8]
-	mov	r11d,DWORD PTR[((224-128))+r8]
-	jmp	$L$enc_loop_compact
+_x86_64_AES_encrypt_compact:
+	lea	r8,[128+r14]
+	mov	edi,DWORD[((0-128))+r8]
+	mov	ebp,DWORD[((32-128))+r8]
+	mov	r10d,DWORD[((64-128))+r8]
+	mov	r11d,DWORD[((96-128))+r8]
+	mov	edi,DWORD[((128-128))+r8]
+	mov	ebp,DWORD[((160-128))+r8]
+	mov	r10d,DWORD[((192-128))+r8]
+	mov	r11d,DWORD[((224-128))+r8]
+	jmp	NEAR $L$enc_loop_compact
 ALIGN	16
-$L$enc_loop_compact::
-	xor	eax,DWORD PTR[r15]
-	xor	ebx,DWORD PTR[4+r15]
-	xor	ecx,DWORD PTR[8+r15]
-	xor	edx,DWORD PTR[12+r15]
-	lea	r15,QWORD PTR[16+r15]
+$L$enc_loop_compact:
+	xor	eax,DWORD[r15]
+	xor	ebx,DWORD[4+r15]
+	xor	ecx,DWORD[8+r15]
+	xor	edx,DWORD[12+r15]
+	lea	r15,[16+r15]
 	movzx	r10d,al
 	movzx	r11d,bl
 	movzx	r12d,cl
@@ -181,17 +185,17 @@
 	movzx	edi,ch
 	shr	ecx,16
 	movzx	ebp,dh
-	movzx	r10d,BYTE PTR[r10*1+r14]
-	movzx	r11d,BYTE PTR[r11*1+r14]
-	movzx	r12d,BYTE PTR[r12*1+r14]
-	movzx	r8d,BYTE PTR[r8*1+r14]
+	movzx	r10d,BYTE[r10*1+r14]
+	movzx	r11d,BYTE[r11*1+r14]
+	movzx	r12d,BYTE[r12*1+r14]
+	movzx	r8d,BYTE[r8*1+r14]
 
-	movzx	r9d,BYTE PTR[rsi*1+r14]
+	movzx	r9d,BYTE[rsi*1+r14]
 	movzx	esi,ah
-	movzx	r13d,BYTE PTR[rdi*1+r14]
+	movzx	r13d,BYTE[rdi*1+r14]
 	movzx	edi,cl
-	movzx	ebp,BYTE PTR[rbp*1+r14]
-	movzx	esi,BYTE PTR[rsi*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
 
 	shl	r9d,8
 	shr	edx,16
@@ -203,16 +207,16 @@
 	xor	r11d,r13d
 	shl	ebp,8
 	movzx	r13d,al
-	movzx	edi,BYTE PTR[rdi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
 	xor	r12d,ebp
 
 	shl	esi,8
 	movzx	ebp,bl
 	shl	edi,16
 	xor	r8d,esi
-	movzx	r9d,BYTE PTR[r9*1+r14]
+	movzx	r9d,BYTE[r9*1+r14]
 	movzx	esi,dh
-	movzx	r13d,BYTE PTR[r13*1+r14]
+	movzx	r13d,BYTE[r13*1+r14]
 	xor	r10d,edi
 
 	shr	ecx,8
@@ -221,11 +225,11 @@
 	shr	ebx,8
 	shl	r13d,16
 	xor	r11d,r9d
-	movzx	ebp,BYTE PTR[rbp*1+r14]
-	movzx	esi,BYTE PTR[rsi*1+r14]
-	movzx	edi,BYTE PTR[rdi*1+r14]
-	movzx	edx,BYTE PTR[rcx*1+r14]
-	movzx	ecx,BYTE PTR[rbx*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
+	movzx	edx,BYTE[rcx*1+r14]
+	movzx	ecx,BYTE[rbx*1+r14]
 
 	shl	ebp,16
 	xor	r12d,r13d
@@ -240,24 +244,24 @@
 	mov	ebx,r11d
 	xor	ecx,r12d
 	xor	edx,r8d
-	cmp	r15,QWORD PTR[16+rsp]
-	je	$L$enc_compact_done
-	mov	r10d,080808080h
-	mov	r11d,080808080h
+	cmp	r15,QWORD[16+rsp]
+	je	NEAR $L$enc_compact_done
+	mov	r10d,0x80808080
+	mov	r11d,0x80808080
 	and	r10d,eax
 	and	r11d,ebx
 	mov	esi,r10d
 	mov	edi,r11d
 	shr	r10d,7
-	lea	r8d,DWORD PTR[rax*1+rax]
+	lea	r8d,[rax*1+rax]
 	shr	r11d,7
-	lea	r9d,DWORD PTR[rbx*1+rbx]
+	lea	r9d,[rbx*1+rbx]
 	sub	esi,r10d
 	sub	edi,r11d
-	and	r8d,0fefefefeh
-	and	r9d,0fefefefeh
-	and	esi,01b1b1b1bh
-	and	edi,01b1b1b1bh
+	and	r8d,0xfefefefe
+	and	r9d,0xfefefefe
+	and	esi,0x1b1b1b1b
+	and	edi,0x1b1b1b1b
 	mov	r10d,eax
 	mov	r11d,ebx
 	xor	r8d,esi
@@ -265,9 +269,9 @@
 
 	xor	eax,r8d
 	xor	ebx,r9d
-	mov	r12d,080808080h
+	mov	r12d,0x80808080
 	rol	eax,24
-	mov	ebp,080808080h
+	mov	ebp,0x80808080
 	rol	ebx,24
 	and	r12d,ecx
 	and	ebp,edx
@@ -277,23 +281,23 @@
 	ror	r10d,16
 	mov	edi,ebp
 	ror	r11d,16
-	lea	r8d,DWORD PTR[rcx*1+rcx]
+	lea	r8d,[rcx*1+rcx]
 	shr	r12d,7
 	xor	eax,r10d
 	shr	ebp,7
 	xor	ebx,r11d
 	ror	r10d,8
-	lea	r9d,DWORD PTR[rdx*1+rdx]
+	lea	r9d,[rdx*1+rdx]
 	ror	r11d,8
 	sub	esi,r12d
 	sub	edi,ebp
 	xor	eax,r10d
 	xor	ebx,r11d
 
-	and	r8d,0fefefefeh
-	and	r9d,0fefefefeh
-	and	esi,01b1b1b1bh
-	and	edi,01b1b1b1bh
+	and	r8d,0xfefefefe
+	and	r9d,0xfefefefe
+	and	esi,0x1b1b1b1b
+	and	edi,0x1b1b1b1b
 	mov	r12d,ecx
 	mov	ebp,edx
 	xor	r8d,esi
@@ -304,37 +308,37 @@
 	ror	ebp,16
 	xor	edx,r9d
 	rol	ecx,24
-	mov	esi,DWORD PTR[r14]
+	mov	esi,DWORD[r14]
 	rol	edx,24
 	xor	ecx,r8d
-	mov	edi,DWORD PTR[64+r14]
+	mov	edi,DWORD[64+r14]
 	xor	edx,r9d
-	mov	r8d,DWORD PTR[128+r14]
+	mov	r8d,DWORD[128+r14]
 	xor	ecx,r12d
 	ror	r12d,8
 	xor	edx,ebp
 	ror	ebp,8
 	xor	ecx,r12d
-	mov	r9d,DWORD PTR[192+r14]
+	mov	r9d,DWORD[192+r14]
 	xor	edx,ebp
-	jmp	$L$enc_loop_compact
+	jmp	NEAR $L$enc_loop_compact
 ALIGN	16
-$L$enc_compact_done::
-	xor	eax,DWORD PTR[r15]
-	xor	ebx,DWORD PTR[4+r15]
-	xor	ecx,DWORD PTR[8+r15]
-	xor	edx,DWORD PTR[12+r15]
-DB	0f3h,0c3h
-_x86_64_AES_encrypt_compact	ENDP
+$L$enc_compact_done:
+	xor	eax,DWORD[r15]
+	xor	ebx,DWORD[4+r15]
+	xor	ecx,DWORD[8+r15]
+	xor	edx,DWORD[12+r15]
+DB	0xf3,0xc3
+
 ALIGN	16
-PUBLIC	asm_AES_encrypt
+global	asm_AES_encrypt
 
 
-asm_AES_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+asm_AES_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_AES_encrypt::
+$L$SEH_begin_asm_AES_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -349,142 +353,141 @@
 
 
 	mov	r10,rsp
-	lea	rcx,QWORD PTR[((-63))+rdx]
+	lea	rcx,[((-63))+rdx]
 	and	rsp,-64
 	sub	rcx,rsp
 	neg	rcx
-	and	rcx,03c0h
+	and	rcx,0x3c0
 	sub	rsp,rcx
 	sub	rsp,32
 
-	mov	QWORD PTR[16+rsp],rsi
-	mov	QWORD PTR[24+rsp],r10
-$L$enc_prologue::
+	mov	QWORD[16+rsp],rsi
+	mov	QWORD[24+rsp],r10
+$L$enc_prologue:
 
 	mov	r15,rdx
-	mov	r13d,DWORD PTR[240+r15]
+	mov	r13d,DWORD[240+r15]
 
-	mov	eax,DWORD PTR[rdi]
-	mov	ebx,DWORD PTR[4+rdi]
-	mov	ecx,DWORD PTR[8+rdi]
-	mov	edx,DWORD PTR[12+rdi]
+	mov	eax,DWORD[rdi]
+	mov	ebx,DWORD[4+rdi]
+	mov	ecx,DWORD[8+rdi]
+	mov	edx,DWORD[12+rdi]
 
 	shl	r13d,4
-	lea	rbp,QWORD PTR[r13*1+r15]
-	mov	QWORD PTR[rsp],r15
-	mov	QWORD PTR[8+rsp],rbp
+	lea	rbp,[r13*1+r15]
+	mov	QWORD[rsp],r15
+	mov	QWORD[8+rsp],rbp
 
 
-	lea	r14,QWORD PTR[(($L$AES_Te+2048))]
-	lea	rbp,QWORD PTR[768+rsp]
+	lea	r14,[(($L$AES_Te+2048))]
+	lea	rbp,[768+rsp]
 	sub	rbp,r14
-	and	rbp,0300h
-	lea	r14,QWORD PTR[rbp*1+r14]
+	and	rbp,0x300
+	lea	r14,[rbp*1+r14]
 
 	call	_x86_64_AES_encrypt_compact
 
-	mov	r9,QWORD PTR[16+rsp]
-	mov	rsi,QWORD PTR[24+rsp]
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	r9,QWORD[16+rsp]
+	mov	rsi,QWORD[24+rsp]
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$enc_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$enc_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_AES_encrypt::
-asm_AES_encrypt	ENDP
+$L$SEH_end_asm_AES_encrypt:
 
 ALIGN	16
-_x86_64_AES_decrypt	PROC PRIVATE
-	xor	eax,DWORD PTR[r15]
-	xor	ebx,DWORD PTR[4+r15]
-	xor	ecx,DWORD PTR[8+r15]
-	xor	edx,DWORD PTR[12+r15]
+_x86_64_AES_decrypt:
+	xor	eax,DWORD[r15]
+	xor	ebx,DWORD[4+r15]
+	xor	ecx,DWORD[8+r15]
+	xor	edx,DWORD[12+r15]
 
-	mov	r13d,DWORD PTR[240+r15]
+	mov	r13d,DWORD[240+r15]
 	sub	r13d,1
-	jmp	$L$dec_loop
+	jmp	NEAR $L$dec_loop
 ALIGN	16
-$L$dec_loop::
+$L$dec_loop:
 
 	movzx	esi,al
 	movzx	edi,bl
 	movzx	ebp,cl
-	mov	r10d,DWORD PTR[rsi*8+r14]
-	mov	r11d,DWORD PTR[rdi*8+r14]
-	mov	r12d,DWORD PTR[rbp*8+r14]
+	mov	r10d,DWORD[rsi*8+r14]
+	mov	r11d,DWORD[rdi*8+r14]
+	mov	r12d,DWORD[rbp*8+r14]
 
 	movzx	esi,dh
 	movzx	edi,ah
 	movzx	ebp,dl
-	xor	r10d,DWORD PTR[3+rsi*8+r14]
-	xor	r11d,DWORD PTR[3+rdi*8+r14]
-	mov	r8d,DWORD PTR[rbp*8+r14]
+	xor	r10d,DWORD[3+rsi*8+r14]
+	xor	r11d,DWORD[3+rdi*8+r14]
+	mov	r8d,DWORD[rbp*8+r14]
 
 	movzx	esi,bh
 	shr	eax,16
 	movzx	ebp,ch
-	xor	r12d,DWORD PTR[3+rsi*8+r14]
+	xor	r12d,DWORD[3+rsi*8+r14]
 	shr	edx,16
-	xor	r8d,DWORD PTR[3+rbp*8+r14]
+	xor	r8d,DWORD[3+rbp*8+r14]
 
 	shr	ebx,16
-	lea	r15,QWORD PTR[16+r15]
+	lea	r15,[16+r15]
 	shr	ecx,16
 
 	movzx	esi,cl
 	movzx	edi,dl
 	movzx	ebp,al
-	xor	r10d,DWORD PTR[2+rsi*8+r14]
-	xor	r11d,DWORD PTR[2+rdi*8+r14]
-	xor	r12d,DWORD PTR[2+rbp*8+r14]
+	xor	r10d,DWORD[2+rsi*8+r14]
+	xor	r11d,DWORD[2+rdi*8+r14]
+	xor	r12d,DWORD[2+rbp*8+r14]
 
 	movzx	esi,bh
 	movzx	edi,ch
 	movzx	ebp,bl
-	xor	r10d,DWORD PTR[1+rsi*8+r14]
-	xor	r11d,DWORD PTR[1+rdi*8+r14]
-	xor	r8d,DWORD PTR[2+rbp*8+r14]
+	xor	r10d,DWORD[1+rsi*8+r14]
+	xor	r11d,DWORD[1+rdi*8+r14]
+	xor	r8d,DWORD[2+rbp*8+r14]
 
 	movzx	esi,dh
-	mov	edx,DWORD PTR[12+r15]
+	mov	edx,DWORD[12+r15]
 	movzx	ebp,ah
-	xor	r12d,DWORD PTR[1+rsi*8+r14]
-	mov	eax,DWORD PTR[r15]
-	xor	r8d,DWORD PTR[1+rbp*8+r14]
+	xor	r12d,DWORD[1+rsi*8+r14]
+	mov	eax,DWORD[r15]
+	xor	r8d,DWORD[1+rbp*8+r14]
 
 	xor	eax,r10d
-	mov	ebx,DWORD PTR[4+r15]
-	mov	ecx,DWORD PTR[8+r15]
+	mov	ebx,DWORD[4+r15]
+	mov	ecx,DWORD[8+r15]
 	xor	ecx,r12d
 	xor	ebx,r11d
 	xor	edx,r8d
 	sub	r13d,1
-	jnz	$L$dec_loop
-	lea	r14,QWORD PTR[2048+r14]
+	jnz	NEAR $L$dec_loop
+	lea	r14,[2048+r14]
 	movzx	esi,al
 	movzx	edi,bl
 	movzx	ebp,cl
-	movzx	r10d,BYTE PTR[rsi*1+r14]
-	movzx	r11d,BYTE PTR[rdi*1+r14]
-	movzx	r12d,BYTE PTR[rbp*1+r14]
+	movzx	r10d,BYTE[rsi*1+r14]
+	movzx	r11d,BYTE[rdi*1+r14]
+	movzx	r12d,BYTE[rbp*1+r14]
 
 	movzx	esi,dl
 	movzx	edi,dh
 	movzx	ebp,ah
-	movzx	r8d,BYTE PTR[rsi*1+r14]
-	movzx	edi,BYTE PTR[rdi*1+r14]
-	movzx	ebp,BYTE PTR[rbp*1+r14]
+	movzx	r8d,BYTE[rsi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
 
 	shl	edi,8
 	shl	ebp,8
@@ -496,8 +499,8 @@
 	movzx	esi,bh
 	movzx	edi,ch
 	shr	eax,16
-	movzx	esi,BYTE PTR[rsi*1+r14]
-	movzx	edi,BYTE PTR[rdi*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
 
 	shl	esi,8
 	shl	edi,8
@@ -509,9 +512,9 @@
 	movzx	esi,cl
 	movzx	edi,dl
 	movzx	ebp,al
-	movzx	esi,BYTE PTR[rsi*1+r14]
-	movzx	edi,BYTE PTR[rdi*1+r14]
-	movzx	ebp,BYTE PTR[rbp*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
 
 	shl	esi,16
 	shl	edi,16
@@ -524,9 +527,9 @@
 	movzx	esi,bl
 	movzx	edi,bh
 	movzx	ebp,ch
-	movzx	esi,BYTE PTR[rsi*1+r14]
-	movzx	edi,BYTE PTR[rdi*1+r14]
-	movzx	ebp,BYTE PTR[rbp*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
 
 	shl	esi,16
 	shl	edi,24
@@ -538,10 +541,10 @@
 
 	movzx	esi,dh
 	movzx	edi,ah
-	mov	edx,DWORD PTR[((16+12))+r15]
-	movzx	esi,BYTE PTR[rsi*1+r14]
-	movzx	edi,BYTE PTR[rdi*1+r14]
-	mov	eax,DWORD PTR[((16+0))+r15]
+	mov	edx,DWORD[((16+12))+r15]
+	movzx	esi,BYTE[rsi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
+	mov	eax,DWORD[((16+0))+r15]
 
 	shl	esi,24
 	shl	edi,24
@@ -549,36 +552,36 @@
 	xor	r12d,esi
 	xor	r8d,edi
 
-	mov	ebx,DWORD PTR[((16+4))+r15]
-	mov	ecx,DWORD PTR[((16+8))+r15]
-	lea	r14,QWORD PTR[((-2048))+r14]
+	mov	ebx,DWORD[((16+4))+r15]
+	mov	ecx,DWORD[((16+8))+r15]
+	lea	r14,[((-2048))+r14]
 	xor	eax,r10d
 	xor	ebx,r11d
 	xor	ecx,r12d
 	xor	edx,r8d
-DB	0f3h,0c3h
-_x86_64_AES_decrypt	ENDP
+DB	0xf3,0xc3
+
 
 ALIGN	16
-_x86_64_AES_decrypt_compact	PROC PRIVATE
-	lea	r8,QWORD PTR[128+r14]
-	mov	edi,DWORD PTR[((0-128))+r8]
-	mov	ebp,DWORD PTR[((32-128))+r8]
-	mov	r10d,DWORD PTR[((64-128))+r8]
-	mov	r11d,DWORD PTR[((96-128))+r8]
-	mov	edi,DWORD PTR[((128-128))+r8]
-	mov	ebp,DWORD PTR[((160-128))+r8]
-	mov	r10d,DWORD PTR[((192-128))+r8]
-	mov	r11d,DWORD PTR[((224-128))+r8]
-	jmp	$L$dec_loop_compact
+_x86_64_AES_decrypt_compact:
+	lea	r8,[128+r14]
+	mov	edi,DWORD[((0-128))+r8]
+	mov	ebp,DWORD[((32-128))+r8]
+	mov	r10d,DWORD[((64-128))+r8]
+	mov	r11d,DWORD[((96-128))+r8]
+	mov	edi,DWORD[((128-128))+r8]
+	mov	ebp,DWORD[((160-128))+r8]
+	mov	r10d,DWORD[((192-128))+r8]
+	mov	r11d,DWORD[((224-128))+r8]
+	jmp	NEAR $L$dec_loop_compact
 
 ALIGN	16
-$L$dec_loop_compact::
-	xor	eax,DWORD PTR[r15]
-	xor	ebx,DWORD PTR[4+r15]
-	xor	ecx,DWORD PTR[8+r15]
-	xor	edx,DWORD PTR[12+r15]
-	lea	r15,QWORD PTR[16+r15]
+$L$dec_loop_compact:
+	xor	eax,DWORD[r15]
+	xor	ebx,DWORD[4+r15]
+	xor	ecx,DWORD[8+r15]
+	xor	edx,DWORD[12+r15]
+	lea	r15,[16+r15]
 	movzx	r10d,al
 	movzx	r11d,bl
 	movzx	r12d,cl
@@ -587,16 +590,16 @@
 	movzx	edi,ah
 	shr	edx,16
 	movzx	ebp,bh
-	movzx	r10d,BYTE PTR[r10*1+r14]
-	movzx	r11d,BYTE PTR[r11*1+r14]
-	movzx	r12d,BYTE PTR[r12*1+r14]
-	movzx	r8d,BYTE PTR[r8*1+r14]
+	movzx	r10d,BYTE[r10*1+r14]
+	movzx	r11d,BYTE[r11*1+r14]
+	movzx	r12d,BYTE[r12*1+r14]
+	movzx	r8d,BYTE[r8*1+r14]
 
-	movzx	r9d,BYTE PTR[rsi*1+r14]
+	movzx	r9d,BYTE[rsi*1+r14]
 	movzx	esi,ch
-	movzx	r13d,BYTE PTR[rdi*1+r14]
-	movzx	ebp,BYTE PTR[rbp*1+r14]
-	movzx	esi,BYTE PTR[rsi*1+r14]
+	movzx	r13d,BYTE[rdi*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
 
 	shr	ecx,16
 	shl	r13d,8
@@ -611,17 +614,17 @@
 	xor	r11d,r13d
 	shl	esi,8
 	movzx	r13d,al
-	movzx	edi,BYTE PTR[rdi*1+r14]
+	movzx	edi,BYTE[rdi*1+r14]
 	xor	r12d,ebp
 	movzx	ebp,bl
 
 	shl	edi,16
 	xor	r8d,esi
-	movzx	r9d,BYTE PTR[r9*1+r14]
+	movzx	r9d,BYTE[r9*1+r14]
 	movzx	esi,bh
-	movzx	ebp,BYTE PTR[rbp*1+r14]
+	movzx	ebp,BYTE[rbp*1+r14]
 	xor	r10d,edi
-	movzx	r13d,BYTE PTR[r13*1+r14]
+	movzx	r13d,BYTE[r13*1+r14]
 	movzx	edi,ch
 
 	shl	ebp,16
@@ -633,10 +636,10 @@
 	shr	eax,8
 	xor	r12d,r13d
 
-	movzx	esi,BYTE PTR[rsi*1+r14]
-	movzx	ebx,BYTE PTR[rdi*1+r14]
-	movzx	ecx,BYTE PTR[rbp*1+r14]
-	movzx	edx,BYTE PTR[rax*1+r14]
+	movzx	esi,BYTE[rsi*1+r14]
+	movzx	ebx,BYTE[rdi*1+r14]
+	movzx	ecx,BYTE[rbp*1+r14]
+	movzx	edx,BYTE[rax*1+r14]
 
 	mov	eax,r10d
 	shl	esi,24
@@ -647,16 +650,16 @@
 	xor	ebx,r11d
 	xor	ecx,r12d
 	xor	edx,r8d
-	cmp	r15,QWORD PTR[16+rsp]
-	je	$L$dec_compact_done
+	cmp	r15,QWORD[16+rsp]
+	je	NEAR $L$dec_compact_done
 
-	mov	rsi,QWORD PTR[((256+0))+r14]
+	mov	rsi,QWORD[((256+0))+r14]
 	shl	rbx,32
 	shl	rdx,32
-	mov	rdi,QWORD PTR[((256+8))+r14]
+	mov	rdi,QWORD[((256+8))+r14]
 	or	rax,rbx
 	or	rcx,rdx
-	mov	rbp,QWORD PTR[((256+16))+r14]
+	mov	rbp,QWORD[((256+16))+r14]
 	mov	r9,rsi
 	mov	r12,rsi
 	and	r9,rax
@@ -664,9 +667,9 @@
 	mov	rbx,r9
 	mov	rdx,r12
 	shr	r9,7
-	lea	r8,QWORD PTR[rax*1+rax]
+	lea	r8,[rax*1+rax]
 	shr	r12,7
-	lea	r11,QWORD PTR[rcx*1+rcx]
+	lea	r11,[rcx*1+rcx]
 	sub	rbx,r9
 	sub	rdx,r12
 	and	r8,rdi
@@ -683,9 +686,9 @@
 	mov	rbx,r10
 	mov	rdx,r13
 	shr	r10,7
-	lea	r9,QWORD PTR[r8*1+r8]
+	lea	r9,[r8*1+r8]
 	shr	r13,7
-	lea	r12,QWORD PTR[r11*1+r11]
+	lea	r12,[r11*1+r11]
 	sub	rbx,r10
 	sub	rdx,r13
 	and	r9,rdi
@@ -707,8 +710,8 @@
 	xor	r11,rcx
 	sub	rbx,r10
 	sub	rdx,r13
-	lea	r10,QWORD PTR[r9*1+r9]
-	lea	r13,QWORD PTR[r12*1+r12]
+	lea	r10,[r9*1+r9]
+	lea	r13,[r12*1+r12]
 	xor	r9,rax
 	xor	r12,rcx
 	and	r10,rdi
@@ -761,37 +764,37 @@
 	shr	r11,32
 	xor	edx,r13d
 
-	mov	rsi,QWORD PTR[r14]
+	mov	rsi,QWORD[r14]
 	rol	r9d,16
-	mov	rdi,QWORD PTR[64+r14]
+	mov	rdi,QWORD[64+r14]
 	rol	r12d,16
-	mov	rbp,QWORD PTR[128+r14]
+	mov	rbp,QWORD[128+r14]
 	rol	r8d,16
-	mov	r10,QWORD PTR[192+r14]
+	mov	r10,QWORD[192+r14]
 	xor	eax,r9d
 	rol	r11d,16
 	xor	ecx,r12d
-	mov	r13,QWORD PTR[256+r14]
+	mov	r13,QWORD[256+r14]
 	xor	ebx,r8d
 	xor	edx,r11d
-	jmp	$L$dec_loop_compact
+	jmp	NEAR $L$dec_loop_compact
 ALIGN	16
-$L$dec_compact_done::
-	xor	eax,DWORD PTR[r15]
-	xor	ebx,DWORD PTR[4+r15]
-	xor	ecx,DWORD PTR[8+r15]
-	xor	edx,DWORD PTR[12+r15]
-DB	0f3h,0c3h
-_x86_64_AES_decrypt_compact	ENDP
+$L$dec_compact_done:
+	xor	eax,DWORD[r15]
+	xor	ebx,DWORD[4+r15]
+	xor	ecx,DWORD[8+r15]
+	xor	edx,DWORD[12+r15]
+DB	0xf3,0xc3
+
 ALIGN	16
-PUBLIC	asm_AES_decrypt
+global	asm_AES_decrypt
 
 
-asm_AES_decrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+asm_AES_decrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_AES_decrypt::
+$L$SEH_begin_asm_AES_decrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -806,70 +809,69 @@
 
 
 	mov	r10,rsp
-	lea	rcx,QWORD PTR[((-63))+rdx]
+	lea	rcx,[((-63))+rdx]
 	and	rsp,-64
 	sub	rcx,rsp
 	neg	rcx
-	and	rcx,03c0h
+	and	rcx,0x3c0
 	sub	rsp,rcx
 	sub	rsp,32
 
-	mov	QWORD PTR[16+rsp],rsi
-	mov	QWORD PTR[24+rsp],r10
-$L$dec_prologue::
+	mov	QWORD[16+rsp],rsi
+	mov	QWORD[24+rsp],r10
+$L$dec_prologue:
 
 	mov	r15,rdx
-	mov	r13d,DWORD PTR[240+r15]
+	mov	r13d,DWORD[240+r15]
 
-	mov	eax,DWORD PTR[rdi]
-	mov	ebx,DWORD PTR[4+rdi]
-	mov	ecx,DWORD PTR[8+rdi]
-	mov	edx,DWORD PTR[12+rdi]
+	mov	eax,DWORD[rdi]
+	mov	ebx,DWORD[4+rdi]
+	mov	ecx,DWORD[8+rdi]
+	mov	edx,DWORD[12+rdi]
 
 	shl	r13d,4
-	lea	rbp,QWORD PTR[r13*1+r15]
-	mov	QWORD PTR[rsp],r15
-	mov	QWORD PTR[8+rsp],rbp
+	lea	rbp,[r13*1+r15]
+	mov	QWORD[rsp],r15
+	mov	QWORD[8+rsp],rbp
 
 
-	lea	r14,QWORD PTR[(($L$AES_Td+2048))]
-	lea	rbp,QWORD PTR[768+rsp]
+	lea	r14,[(($L$AES_Td+2048))]
+	lea	rbp,[768+rsp]
 	sub	rbp,r14
-	and	rbp,0300h
-	lea	r14,QWORD PTR[rbp*1+r14]
+	and	rbp,0x300
+	lea	r14,[rbp*1+r14]
 	shr	rbp,3
 	add	r14,rbp
 
 	call	_x86_64_AES_decrypt_compact
 
-	mov	r9,QWORD PTR[16+rsp]
-	mov	rsi,QWORD PTR[24+rsp]
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	r9,QWORD[16+rsp]
+	mov	rsi,QWORD[24+rsp]
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$dec_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$dec_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_AES_decrypt::
-asm_AES_decrypt	ENDP
+$L$SEH_end_asm_AES_decrypt:
 ALIGN	16
-PUBLIC	asm_AES_set_encrypt_key
+global	asm_AES_set_encrypt_key
 
-asm_AES_set_encrypt_key	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+asm_AES_set_encrypt_key:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_AES_set_encrypt_key::
+$L$SEH_begin_asm_AES_set_encrypt_key:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -882,267 +884,266 @@
 	push	r14
 	push	r15
 	sub	rsp,8
-$L$enc_key_prologue::
+$L$enc_key_prologue:
 
 	call	_x86_64_AES_set_encrypt_key
 
-	mov	rbp,QWORD PTR[40+rsp]
-	mov	rbx,QWORD PTR[48+rsp]
+	mov	rbp,QWORD[40+rsp]
+	mov	rbx,QWORD[48+rsp]
 	add	rsp,56
-$L$enc_key_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$enc_key_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_AES_set_encrypt_key::
-asm_AES_set_encrypt_key	ENDP
+$L$SEH_end_asm_AES_set_encrypt_key:
 
 
 ALIGN	16
-_x86_64_AES_set_encrypt_key	PROC PRIVATE
+_x86_64_AES_set_encrypt_key:
 	mov	ecx,esi
 	mov	rsi,rdi
 	mov	rdi,rdx
 
 	test	rsi,-1
-	jz	$L$badpointer
+	jz	NEAR $L$badpointer
 	test	rdi,-1
-	jz	$L$badpointer
+	jz	NEAR $L$badpointer
 
-	lea	rbp,QWORD PTR[$L$AES_Te]
-	lea	rbp,QWORD PTR[((2048+128))+rbp]
+	lea	rbp,[$L$AES_Te]
+	lea	rbp,[((2048+128))+rbp]
 
 
-	mov	eax,DWORD PTR[((0-128))+rbp]
-	mov	ebx,DWORD PTR[((32-128))+rbp]
-	mov	r8d,DWORD PTR[((64-128))+rbp]
-	mov	edx,DWORD PTR[((96-128))+rbp]
-	mov	eax,DWORD PTR[((128-128))+rbp]
-	mov	ebx,DWORD PTR[((160-128))+rbp]
-	mov	r8d,DWORD PTR[((192-128))+rbp]
-	mov	edx,DWORD PTR[((224-128))+rbp]
+	mov	eax,DWORD[((0-128))+rbp]
+	mov	ebx,DWORD[((32-128))+rbp]
+	mov	r8d,DWORD[((64-128))+rbp]
+	mov	edx,DWORD[((96-128))+rbp]
+	mov	eax,DWORD[((128-128))+rbp]
+	mov	ebx,DWORD[((160-128))+rbp]
+	mov	r8d,DWORD[((192-128))+rbp]
+	mov	edx,DWORD[((224-128))+rbp]
 
 	cmp	ecx,128
-	je	$L$10rounds
+	je	NEAR $L$10rounds
 	cmp	ecx,192
-	je	$L$12rounds
+	je	NEAR $L$12rounds
 	cmp	ecx,256
-	je	$L$14rounds
+	je	NEAR $L$14rounds
 	mov	rax,-2
-	jmp	$L$exit
+	jmp	NEAR $L$exit
 
-$L$10rounds::
-	mov	rax,QWORD PTR[rsi]
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	QWORD PTR[rdi],rax
-	mov	QWORD PTR[8+rdi],rdx
+$L$10rounds:
+	mov	rax,QWORD[rsi]
+	mov	rdx,QWORD[8+rsi]
+	mov	QWORD[rdi],rax
+	mov	QWORD[8+rdi],rdx
 
 	shr	rdx,32
 	xor	ecx,ecx
-	jmp	$L$10shortcut
+	jmp	NEAR $L$10shortcut
 ALIGN	4
-$L$10loop::
-	mov	eax,DWORD PTR[rdi]
-	mov	edx,DWORD PTR[12+rdi]
-$L$10shortcut::
+$L$10loop:
+	mov	eax,DWORD[rdi]
+	mov	edx,DWORD[12+rdi]
+$L$10shortcut:
 	movzx	esi,dl
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,24
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shr	edx,16
 	movzx	esi,dl
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,8
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shl	ebx,16
 	xor	eax,ebx
 
-	xor	eax,DWORD PTR[((1024-128))+rcx*4+rbp]
-	mov	DWORD PTR[16+rdi],eax
-	xor	eax,DWORD PTR[4+rdi]
-	mov	DWORD PTR[20+rdi],eax
-	xor	eax,DWORD PTR[8+rdi]
-	mov	DWORD PTR[24+rdi],eax
-	xor	eax,DWORD PTR[12+rdi]
-	mov	DWORD PTR[28+rdi],eax
+	xor	eax,DWORD[((1024-128))+rcx*4+rbp]
+	mov	DWORD[16+rdi],eax
+	xor	eax,DWORD[4+rdi]
+	mov	DWORD[20+rdi],eax
+	xor	eax,DWORD[8+rdi]
+	mov	DWORD[24+rdi],eax
+	xor	eax,DWORD[12+rdi]
+	mov	DWORD[28+rdi],eax
 	add	ecx,1
-	lea	rdi,QWORD PTR[16+rdi]
+	lea	rdi,[16+rdi]
 	cmp	ecx,10
-	jl	$L$10loop
+	jl	NEAR $L$10loop
 
-	mov	DWORD PTR[80+rdi],10
+	mov	DWORD[80+rdi],10
 	xor	rax,rax
-	jmp	$L$exit
+	jmp	NEAR $L$exit
 
-$L$12rounds::
-	mov	rax,QWORD PTR[rsi]
-	mov	rbx,QWORD PTR[8+rsi]
-	mov	rdx,QWORD PTR[16+rsi]
-	mov	QWORD PTR[rdi],rax
-	mov	QWORD PTR[8+rdi],rbx
-	mov	QWORD PTR[16+rdi],rdx
+$L$12rounds:
+	mov	rax,QWORD[rsi]
+	mov	rbx,QWORD[8+rsi]
+	mov	rdx,QWORD[16+rsi]
+	mov	QWORD[rdi],rax
+	mov	QWORD[8+rdi],rbx
+	mov	QWORD[16+rdi],rdx
 
 	shr	rdx,32
 	xor	ecx,ecx
-	jmp	$L$12shortcut
+	jmp	NEAR $L$12shortcut
 ALIGN	4
-$L$12loop::
-	mov	eax,DWORD PTR[rdi]
-	mov	edx,DWORD PTR[20+rdi]
-$L$12shortcut::
+$L$12loop:
+	mov	eax,DWORD[rdi]
+	mov	edx,DWORD[20+rdi]
+$L$12shortcut:
 	movzx	esi,dl
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,24
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shr	edx,16
 	movzx	esi,dl
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,8
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shl	ebx,16
 	xor	eax,ebx
 
-	xor	eax,DWORD PTR[((1024-128))+rcx*4+rbp]
-	mov	DWORD PTR[24+rdi],eax
-	xor	eax,DWORD PTR[4+rdi]
-	mov	DWORD PTR[28+rdi],eax
-	xor	eax,DWORD PTR[8+rdi]
-	mov	DWORD PTR[32+rdi],eax
-	xor	eax,DWORD PTR[12+rdi]
-	mov	DWORD PTR[36+rdi],eax
+	xor	eax,DWORD[((1024-128))+rcx*4+rbp]
+	mov	DWORD[24+rdi],eax
+	xor	eax,DWORD[4+rdi]
+	mov	DWORD[28+rdi],eax
+	xor	eax,DWORD[8+rdi]
+	mov	DWORD[32+rdi],eax
+	xor	eax,DWORD[12+rdi]
+	mov	DWORD[36+rdi],eax
 
 	cmp	ecx,7
-	je	$L$12break
+	je	NEAR $L$12break
 	add	ecx,1
 
-	xor	eax,DWORD PTR[16+rdi]
-	mov	DWORD PTR[40+rdi],eax
-	xor	eax,DWORD PTR[20+rdi]
-	mov	DWORD PTR[44+rdi],eax
+	xor	eax,DWORD[16+rdi]
+	mov	DWORD[40+rdi],eax
+	xor	eax,DWORD[20+rdi]
+	mov	DWORD[44+rdi],eax
 
-	lea	rdi,QWORD PTR[24+rdi]
-	jmp	$L$12loop
-$L$12break::
-	mov	DWORD PTR[72+rdi],12
+	lea	rdi,[24+rdi]
+	jmp	NEAR $L$12loop
+$L$12break:
+	mov	DWORD[72+rdi],12
 	xor	rax,rax
-	jmp	$L$exit
+	jmp	NEAR $L$exit
 
-$L$14rounds::
-	mov	rax,QWORD PTR[rsi]
-	mov	rbx,QWORD PTR[8+rsi]
-	mov	rcx,QWORD PTR[16+rsi]
-	mov	rdx,QWORD PTR[24+rsi]
-	mov	QWORD PTR[rdi],rax
-	mov	QWORD PTR[8+rdi],rbx
-	mov	QWORD PTR[16+rdi],rcx
-	mov	QWORD PTR[24+rdi],rdx
+$L$14rounds:
+	mov	rax,QWORD[rsi]
+	mov	rbx,QWORD[8+rsi]
+	mov	rcx,QWORD[16+rsi]
+	mov	rdx,QWORD[24+rsi]
+	mov	QWORD[rdi],rax
+	mov	QWORD[8+rdi],rbx
+	mov	QWORD[16+rdi],rcx
+	mov	QWORD[24+rdi],rdx
 
 	shr	rdx,32
 	xor	ecx,ecx
-	jmp	$L$14shortcut
+	jmp	NEAR $L$14shortcut
 ALIGN	4
-$L$14loop::
-	mov	eax,DWORD PTR[rdi]
-	mov	edx,DWORD PTR[28+rdi]
-$L$14shortcut::
+$L$14loop:
+	mov	eax,DWORD[rdi]
+	mov	edx,DWORD[28+rdi]
+$L$14shortcut:
 	movzx	esi,dl
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,24
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shr	edx,16
 	movzx	esi,dl
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,8
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shl	ebx,16
 	xor	eax,ebx
 
-	xor	eax,DWORD PTR[((1024-128))+rcx*4+rbp]
-	mov	DWORD PTR[32+rdi],eax
-	xor	eax,DWORD PTR[4+rdi]
-	mov	DWORD PTR[36+rdi],eax
-	xor	eax,DWORD PTR[8+rdi]
-	mov	DWORD PTR[40+rdi],eax
-	xor	eax,DWORD PTR[12+rdi]
-	mov	DWORD PTR[44+rdi],eax
+	xor	eax,DWORD[((1024-128))+rcx*4+rbp]
+	mov	DWORD[32+rdi],eax
+	xor	eax,DWORD[4+rdi]
+	mov	DWORD[36+rdi],eax
+	xor	eax,DWORD[8+rdi]
+	mov	DWORD[40+rdi],eax
+	xor	eax,DWORD[12+rdi]
+	mov	DWORD[44+rdi],eax
 
 	cmp	ecx,6
-	je	$L$14break
+	je	NEAR $L$14break
 	add	ecx,1
 
 	mov	edx,eax
-	mov	eax,DWORD PTR[16+rdi]
+	mov	eax,DWORD[16+rdi]
 	movzx	esi,dl
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shr	edx,16
 	shl	ebx,8
 	movzx	esi,dl
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	movzx	esi,dh
 	shl	ebx,16
 	xor	eax,ebx
 
-	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp]
+	movzx	ebx,BYTE[((-128))+rsi*1+rbp]
 	shl	ebx,24
 	xor	eax,ebx
 
-	mov	DWORD PTR[48+rdi],eax
-	xor	eax,DWORD PTR[20+rdi]
-	mov	DWORD PTR[52+rdi],eax
-	xor	eax,DWORD PTR[24+rdi]
-	mov	DWORD PTR[56+rdi],eax
-	xor	eax,DWORD PTR[28+rdi]
-	mov	DWORD PTR[60+rdi],eax
+	mov	DWORD[48+rdi],eax
+	xor	eax,DWORD[20+rdi]
+	mov	DWORD[52+rdi],eax
+	xor	eax,DWORD[24+rdi]
+	mov	DWORD[56+rdi],eax
+	xor	eax,DWORD[28+rdi]
+	mov	DWORD[60+rdi],eax
 
-	lea	rdi,QWORD PTR[32+rdi]
-	jmp	$L$14loop
-$L$14break::
-	mov	DWORD PTR[48+rdi],14
+	lea	rdi,[32+rdi]
+	jmp	NEAR $L$14loop
+$L$14break:
+	mov	DWORD[48+rdi],14
 	xor	rax,rax
-	jmp	$L$exit
+	jmp	NEAR $L$exit
 
-$L$badpointer::
+$L$badpointer:
 	mov	rax,-1
-$L$exit::
-DB	0f3h,0c3h
-_x86_64_AES_set_encrypt_key	ENDP
-ALIGN	16
-PUBLIC	asm_AES_set_decrypt_key
+$L$exit:
+DB	0xf3,0xc3
 
-asm_AES_set_decrypt_key	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+ALIGN	16
+global	asm_AES_set_decrypt_key
+
+asm_AES_set_decrypt_key:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_AES_set_decrypt_key::
+$L$SEH_begin_asm_AES_set_decrypt_key:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -1155,46 +1156,46 @@
 	push	r14
 	push	r15
 	push	rdx
-$L$dec_key_prologue::
+$L$dec_key_prologue:
 
 	call	_x86_64_AES_set_encrypt_key
-	mov	r8,QWORD PTR[rsp]
+	mov	r8,QWORD[rsp]
 	cmp	eax,0
-	jne	$L$abort
+	jne	NEAR $L$abort
 
-	mov	r14d,DWORD PTR[240+r8]
+	mov	r14d,DWORD[240+r8]
 	xor	rdi,rdi
-	lea	rcx,QWORD PTR[r14*4+rdi]
+	lea	rcx,[r14*4+rdi]
 	mov	rsi,r8
-	lea	rdi,QWORD PTR[rcx*4+r8]
+	lea	rdi,[rcx*4+r8]
 ALIGN	4
-$L$invert::
-	mov	rax,QWORD PTR[rsi]
-	mov	rbx,QWORD PTR[8+rsi]
-	mov	rcx,QWORD PTR[rdi]
-	mov	rdx,QWORD PTR[8+rdi]
-	mov	QWORD PTR[rdi],rax
-	mov	QWORD PTR[8+rdi],rbx
-	mov	QWORD PTR[rsi],rcx
-	mov	QWORD PTR[8+rsi],rdx
-	lea	rsi,QWORD PTR[16+rsi]
-	lea	rdi,QWORD PTR[((-16))+rdi]
+$L$invert:
+	mov	rax,QWORD[rsi]
+	mov	rbx,QWORD[8+rsi]
+	mov	rcx,QWORD[rdi]
+	mov	rdx,QWORD[8+rdi]
+	mov	QWORD[rdi],rax
+	mov	QWORD[8+rdi],rbx
+	mov	QWORD[rsi],rcx
+	mov	QWORD[8+rsi],rdx
+	lea	rsi,[16+rsi]
+	lea	rdi,[((-16))+rdi]
 	cmp	rdi,rsi
-	jne	$L$invert
+	jne	NEAR $L$invert
 
-	lea	rax,QWORD PTR[(($L$AES_Te+2048+1024))]
+	lea	rax,[(($L$AES_Te+2048+1024))]
 
-	mov	rsi,QWORD PTR[40+rax]
-	mov	rdi,QWORD PTR[48+rax]
-	mov	rbp,QWORD PTR[56+rax]
+	mov	rsi,QWORD[40+rax]
+	mov	rdi,QWORD[48+rax]
+	mov	rbp,QWORD[56+rax]
 
 	mov	r15,r8
 	sub	r14d,1
 ALIGN	4
-$L$permute::
-	lea	r15,QWORD PTR[16+r15]
-	mov	rax,QWORD PTR[r15]
-	mov	rcx,QWORD PTR[8+r15]
+$L$permute:
+	lea	r15,[16+r15]
+	mov	rax,QWORD[r15]
+	mov	rcx,QWORD[8+r15]
 	mov	r9,rsi
 	mov	r12,rsi
 	and	r9,rax
@@ -1202,9 +1203,9 @@
 	mov	rbx,r9
 	mov	rdx,r12
 	shr	r9,7
-	lea	r8,QWORD PTR[rax*1+rax]
+	lea	r8,[rax*1+rax]
 	shr	r12,7
-	lea	r11,QWORD PTR[rcx*1+rcx]
+	lea	r11,[rcx*1+rcx]
 	sub	rbx,r9
 	sub	rdx,r12
 	and	r8,rdi
@@ -1221,9 +1222,9 @@
 	mov	rbx,r10
 	mov	rdx,r13
 	shr	r10,7
-	lea	r9,QWORD PTR[r8*1+r8]
+	lea	r9,[r8*1+r8]
 	shr	r13,7
-	lea	r12,QWORD PTR[r11*1+r11]
+	lea	r12,[r11*1+r11]
 	sub	rbx,r10
 	sub	rdx,r13
 	and	r9,rdi
@@ -1245,8 +1246,8 @@
 	xor	r11,rcx
 	sub	rbx,r10
 	sub	rdx,r13
-	lea	r10,QWORD PTR[r9*1+r9]
-	lea	r13,QWORD PTR[r12*1+r12]
+	lea	r10,[r9*1+r9]
+	lea	r13,[r12*1+r12]
 	xor	r9,rax
 	xor	r12,rcx
 	and	r10,rdi
@@ -1312,48 +1313,47 @@
 
 	xor	ebx,r8d
 	xor	edx,r11d
-	mov	DWORD PTR[r15],eax
-	mov	DWORD PTR[4+r15],ebx
-	mov	DWORD PTR[8+r15],ecx
-	mov	DWORD PTR[12+r15],edx
+	mov	DWORD[r15],eax
+	mov	DWORD[4+r15],ebx
+	mov	DWORD[8+r15],ecx
+	mov	DWORD[12+r15],edx
 	sub	r14d,1
-	jnz	$L$permute
+	jnz	NEAR $L$permute
 
 	xor	rax,rax
-$L$abort::
-	mov	r15,QWORD PTR[8+rsp]
-	mov	r14,QWORD PTR[16+rsp]
-	mov	r13,QWORD PTR[24+rsp]
-	mov	r12,QWORD PTR[32+rsp]
-	mov	rbp,QWORD PTR[40+rsp]
-	mov	rbx,QWORD PTR[48+rsp]
+$L$abort:
+	mov	r15,QWORD[8+rsp]
+	mov	r14,QWORD[16+rsp]
+	mov	r13,QWORD[24+rsp]
+	mov	r12,QWORD[32+rsp]
+	mov	rbp,QWORD[40+rsp]
+	mov	rbx,QWORD[48+rsp]
 	add	rsp,56
-$L$dec_key_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$dec_key_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_AES_set_decrypt_key::
-asm_AES_set_decrypt_key	ENDP
+$L$SEH_end_asm_AES_set_decrypt_key:
 ALIGN	16
-PUBLIC	asm_AES_cbc_encrypt
+global	asm_AES_cbc_encrypt
 
-EXTERN	OPENSSL_ia32cap_P:NEAR
+EXTERN	OPENSSL_ia32cap_P
 
-asm_AES_cbc_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+asm_AES_cbc_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_AES_cbc_encrypt::
+$L$SEH_begin_asm_AES_cbc_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	cmp	rdx,0
-	je	$L$cbc_epilogue
+	je	NEAR $L$cbc_epilogue
 	pushfq
 	push	rbx
 	push	rbp
@@ -1361,269 +1361,269 @@
 	push	r13
 	push	r14
 	push	r15
-$L$cbc_prologue::
+$L$cbc_prologue:
 
 	cld
 	mov	r9d,r9d
 
-	lea	r14,QWORD PTR[$L$AES_Te]
+	lea	r14,[$L$AES_Te]
 	cmp	r9,0
-	jne	$L$cbc_picked_te
-	lea	r14,QWORD PTR[$L$AES_Td]
-$L$cbc_picked_te::
+	jne	NEAR $L$cbc_picked_te
+	lea	r14,[$L$AES_Td]
+$L$cbc_picked_te:
 
-	mov	r10d,DWORD PTR[OPENSSL_ia32cap_P]
+	mov	r10d,DWORD[OPENSSL_ia32cap_P]
 	cmp	rdx,512
-	jb	$L$cbc_slow_prologue
+	jb	NEAR $L$cbc_slow_prologue
 	test	rdx,15
-	jnz	$L$cbc_slow_prologue
+	jnz	NEAR $L$cbc_slow_prologue
 	bt	r10d,28
-	jc	$L$cbc_slow_prologue
+	jc	NEAR $L$cbc_slow_prologue
 
 
-	lea	r15,QWORD PTR[((-88-248))+rsp]
+	lea	r15,[((-88-248))+rsp]
 	and	r15,-64
 
 
 	mov	r10,r14
-	lea	r11,QWORD PTR[2304+r14]
+	lea	r11,[2304+r14]
 	mov	r12,r15
-	and	r10,0FFFh
-	and	r11,0FFFh
-	and	r12,0FFFh
+	and	r10,0xFFF
+	and	r11,0xFFF
+	and	r12,0xFFF
 
 	cmp	r12,r11
-	jb	$L$cbc_te_break_out
+	jb	NEAR $L$cbc_te_break_out
 	sub	r12,r11
 	sub	r15,r12
-	jmp	$L$cbc_te_ok
-$L$cbc_te_break_out::
+	jmp	NEAR $L$cbc_te_ok
+$L$cbc_te_break_out:
 	sub	r12,r10
-	and	r12,0FFFh
+	and	r12,0xFFF
 	add	r12,320
 	sub	r15,r12
 ALIGN	4
-$L$cbc_te_ok::
+$L$cbc_te_ok:
 
 	xchg	r15,rsp
 
-	mov	QWORD PTR[16+rsp],r15
-$L$cbc_fast_body::
-	mov	QWORD PTR[24+rsp],rdi
-	mov	QWORD PTR[32+rsp],rsi
-	mov	QWORD PTR[40+rsp],rdx
-	mov	QWORD PTR[48+rsp],rcx
-	mov	QWORD PTR[56+rsp],r8
-	mov	DWORD PTR[((80+240))+rsp],0
+	mov	QWORD[16+rsp],r15
+$L$cbc_fast_body:
+	mov	QWORD[24+rsp],rdi
+	mov	QWORD[32+rsp],rsi
+	mov	QWORD[40+rsp],rdx
+	mov	QWORD[48+rsp],rcx
+	mov	QWORD[56+rsp],r8
+	mov	DWORD[((80+240))+rsp],0
 	mov	rbp,r8
 	mov	rbx,r9
 	mov	r9,rsi
 	mov	r8,rdi
 	mov	r15,rcx
 
-	mov	eax,DWORD PTR[240+r15]
+	mov	eax,DWORD[240+r15]
 
 	mov	r10,r15
 	sub	r10,r14
-	and	r10,0fffh
+	and	r10,0xfff
 	cmp	r10,2304
-	jb	$L$cbc_do_ecopy
+	jb	NEAR $L$cbc_do_ecopy
 	cmp	r10,4096-248
-	jb	$L$cbc_skip_ecopy
+	jb	NEAR $L$cbc_skip_ecopy
 ALIGN	4
-$L$cbc_do_ecopy::
+$L$cbc_do_ecopy:
 	mov	rsi,r15
-	lea	rdi,QWORD PTR[80+rsp]
-	lea	r15,QWORD PTR[80+rsp]
+	lea	rdi,[80+rsp]
+	lea	r15,[80+rsp]
 	mov	ecx,240/8
-	DD	090A548F3h
-	mov	DWORD PTR[rdi],eax
-$L$cbc_skip_ecopy::
-	mov	QWORD PTR[rsp],r15
+	DD	0x90A548F3
+	mov	DWORD[rdi],eax
+$L$cbc_skip_ecopy:
+	mov	QWORD[rsp],r15
 
 	mov	ecx,18
 ALIGN	4
-$L$cbc_prefetch_te::
-	mov	r10,QWORD PTR[r14]
-	mov	r11,QWORD PTR[32+r14]
-	mov	r12,QWORD PTR[64+r14]
-	mov	r13,QWORD PTR[96+r14]
-	lea	r14,QWORD PTR[128+r14]
+$L$cbc_prefetch_te:
+	mov	r10,QWORD[r14]
+	mov	r11,QWORD[32+r14]
+	mov	r12,QWORD[64+r14]
+	mov	r13,QWORD[96+r14]
+	lea	r14,[128+r14]
 	sub	ecx,1
-	jnz	$L$cbc_prefetch_te
-	lea	r14,QWORD PTR[((-2304))+r14]
+	jnz	NEAR $L$cbc_prefetch_te
+	lea	r14,[((-2304))+r14]
 
 	cmp	rbx,0
-	je	$L$FAST_DECRYPT
+	je	NEAR $L$FAST_DECRYPT
 
 
-	mov	eax,DWORD PTR[rbp]
-	mov	ebx,DWORD PTR[4+rbp]
-	mov	ecx,DWORD PTR[8+rbp]
-	mov	edx,DWORD PTR[12+rbp]
+	mov	eax,DWORD[rbp]
+	mov	ebx,DWORD[4+rbp]
+	mov	ecx,DWORD[8+rbp]
+	mov	edx,DWORD[12+rbp]
 
 ALIGN	4
-$L$cbc_fast_enc_loop::
-	xor	eax,DWORD PTR[r8]
-	xor	ebx,DWORD PTR[4+r8]
-	xor	ecx,DWORD PTR[8+r8]
-	xor	edx,DWORD PTR[12+r8]
-	mov	r15,QWORD PTR[rsp]
-	mov	QWORD PTR[24+rsp],r8
+$L$cbc_fast_enc_loop:
+	xor	eax,DWORD[r8]
+	xor	ebx,DWORD[4+r8]
+	xor	ecx,DWORD[8+r8]
+	xor	edx,DWORD[12+r8]
+	mov	r15,QWORD[rsp]
+	mov	QWORD[24+rsp],r8
 
 	call	_x86_64_AES_encrypt
 
-	mov	r8,QWORD PTR[24+rsp]
-	mov	r10,QWORD PTR[40+rsp]
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	r8,QWORD[24+rsp]
+	mov	r10,QWORD[40+rsp]
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	lea	r8,QWORD PTR[16+r8]
-	lea	r9,QWORD PTR[16+r9]
+	lea	r8,[16+r8]
+	lea	r9,[16+r9]
 	sub	r10,16
 	test	r10,-16
-	mov	QWORD PTR[40+rsp],r10
-	jnz	$L$cbc_fast_enc_loop
-	mov	rbp,QWORD PTR[56+rsp]
-	mov	DWORD PTR[rbp],eax
-	mov	DWORD PTR[4+rbp],ebx
-	mov	DWORD PTR[8+rbp],ecx
-	mov	DWORD PTR[12+rbp],edx
+	mov	QWORD[40+rsp],r10
+	jnz	NEAR $L$cbc_fast_enc_loop
+	mov	rbp,QWORD[56+rsp]
+	mov	DWORD[rbp],eax
+	mov	DWORD[4+rbp],ebx
+	mov	DWORD[8+rbp],ecx
+	mov	DWORD[12+rbp],edx
 
-	jmp	$L$cbc_fast_cleanup
+	jmp	NEAR $L$cbc_fast_cleanup
 
 
 ALIGN	16
-$L$FAST_DECRYPT::
+$L$FAST_DECRYPT:
 	cmp	r9,r8
-	je	$L$cbc_fast_dec_in_place
+	je	NEAR $L$cbc_fast_dec_in_place
 
-	mov	QWORD PTR[64+rsp],rbp
+	mov	QWORD[64+rsp],rbp
 ALIGN	4
-$L$cbc_fast_dec_loop::
-	mov	eax,DWORD PTR[r8]
-	mov	ebx,DWORD PTR[4+r8]
-	mov	ecx,DWORD PTR[8+r8]
-	mov	edx,DWORD PTR[12+r8]
-	mov	r15,QWORD PTR[rsp]
-	mov	QWORD PTR[24+rsp],r8
+$L$cbc_fast_dec_loop:
+	mov	eax,DWORD[r8]
+	mov	ebx,DWORD[4+r8]
+	mov	ecx,DWORD[8+r8]
+	mov	edx,DWORD[12+r8]
+	mov	r15,QWORD[rsp]
+	mov	QWORD[24+rsp],r8
 
 	call	_x86_64_AES_decrypt
 
-	mov	rbp,QWORD PTR[64+rsp]
-	mov	r8,QWORD PTR[24+rsp]
-	mov	r10,QWORD PTR[40+rsp]
-	xor	eax,DWORD PTR[rbp]
-	xor	ebx,DWORD PTR[4+rbp]
-	xor	ecx,DWORD PTR[8+rbp]
-	xor	edx,DWORD PTR[12+rbp]
+	mov	rbp,QWORD[64+rsp]
+	mov	r8,QWORD[24+rsp]
+	mov	r10,QWORD[40+rsp]
+	xor	eax,DWORD[rbp]
+	xor	ebx,DWORD[4+rbp]
+	xor	ecx,DWORD[8+rbp]
+	xor	edx,DWORD[12+rbp]
 	mov	rbp,r8
 
 	sub	r10,16
-	mov	QWORD PTR[40+rsp],r10
-	mov	QWORD PTR[64+rsp],rbp
+	mov	QWORD[40+rsp],r10
+	mov	QWORD[64+rsp],rbp
 
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	lea	r8,QWORD PTR[16+r8]
-	lea	r9,QWORD PTR[16+r9]
-	jnz	$L$cbc_fast_dec_loop
-	mov	r12,QWORD PTR[56+rsp]
-	mov	r10,QWORD PTR[rbp]
-	mov	r11,QWORD PTR[8+rbp]
-	mov	QWORD PTR[r12],r10
-	mov	QWORD PTR[8+r12],r11
-	jmp	$L$cbc_fast_cleanup
+	lea	r8,[16+r8]
+	lea	r9,[16+r9]
+	jnz	NEAR $L$cbc_fast_dec_loop
+	mov	r12,QWORD[56+rsp]
+	mov	r10,QWORD[rbp]
+	mov	r11,QWORD[8+rbp]
+	mov	QWORD[r12],r10
+	mov	QWORD[8+r12],r11
+	jmp	NEAR $L$cbc_fast_cleanup
 
 ALIGN	16
-$L$cbc_fast_dec_in_place::
-	mov	r10,QWORD PTR[rbp]
-	mov	r11,QWORD PTR[8+rbp]
-	mov	QWORD PTR[((0+64))+rsp],r10
-	mov	QWORD PTR[((8+64))+rsp],r11
+$L$cbc_fast_dec_in_place:
+	mov	r10,QWORD[rbp]
+	mov	r11,QWORD[8+rbp]
+	mov	QWORD[((0+64))+rsp],r10
+	mov	QWORD[((8+64))+rsp],r11
 ALIGN	4
-$L$cbc_fast_dec_in_place_loop::
-	mov	eax,DWORD PTR[r8]
-	mov	ebx,DWORD PTR[4+r8]
-	mov	ecx,DWORD PTR[8+r8]
-	mov	edx,DWORD PTR[12+r8]
-	mov	r15,QWORD PTR[rsp]
-	mov	QWORD PTR[24+rsp],r8
+$L$cbc_fast_dec_in_place_loop:
+	mov	eax,DWORD[r8]
+	mov	ebx,DWORD[4+r8]
+	mov	ecx,DWORD[8+r8]
+	mov	edx,DWORD[12+r8]
+	mov	r15,QWORD[rsp]
+	mov	QWORD[24+rsp],r8
 
 	call	_x86_64_AES_decrypt
 
-	mov	r8,QWORD PTR[24+rsp]
-	mov	r10,QWORD PTR[40+rsp]
-	xor	eax,DWORD PTR[((0+64))+rsp]
-	xor	ebx,DWORD PTR[((4+64))+rsp]
-	xor	ecx,DWORD PTR[((8+64))+rsp]
-	xor	edx,DWORD PTR[((12+64))+rsp]
+	mov	r8,QWORD[24+rsp]
+	mov	r10,QWORD[40+rsp]
+	xor	eax,DWORD[((0+64))+rsp]
+	xor	ebx,DWORD[((4+64))+rsp]
+	xor	ecx,DWORD[((8+64))+rsp]
+	xor	edx,DWORD[((12+64))+rsp]
 
-	mov	r11,QWORD PTR[r8]
-	mov	r12,QWORD PTR[8+r8]
+	mov	r11,QWORD[r8]
+	mov	r12,QWORD[8+r8]
 	sub	r10,16
-	jz	$L$cbc_fast_dec_in_place_done
+	jz	NEAR $L$cbc_fast_dec_in_place_done
 
-	mov	QWORD PTR[((0+64))+rsp],r11
-	mov	QWORD PTR[((8+64))+rsp],r12
+	mov	QWORD[((0+64))+rsp],r11
+	mov	QWORD[((8+64))+rsp],r12
 
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	lea	r8,QWORD PTR[16+r8]
-	lea	r9,QWORD PTR[16+r9]
-	mov	QWORD PTR[40+rsp],r10
-	jmp	$L$cbc_fast_dec_in_place_loop
-$L$cbc_fast_dec_in_place_done::
-	mov	rdi,QWORD PTR[56+rsp]
-	mov	QWORD PTR[rdi],r11
-	mov	QWORD PTR[8+rdi],r12
+	lea	r8,[16+r8]
+	lea	r9,[16+r9]
+	mov	QWORD[40+rsp],r10
+	jmp	NEAR $L$cbc_fast_dec_in_place_loop
+$L$cbc_fast_dec_in_place_done:
+	mov	rdi,QWORD[56+rsp]
+	mov	QWORD[rdi],r11
+	mov	QWORD[8+rdi],r12
 
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
 ALIGN	4
-$L$cbc_fast_cleanup::
-	cmp	DWORD PTR[((80+240))+rsp],0
-	lea	rdi,QWORD PTR[80+rsp]
-	je	$L$cbc_exit
+$L$cbc_fast_cleanup:
+	cmp	DWORD[((80+240))+rsp],0
+	lea	rdi,[80+rsp]
+	je	NEAR $L$cbc_exit
 	mov	ecx,240/8
 	xor	rax,rax
-	DD	090AB48F3h
+	DD	0x90AB48F3
 
-	jmp	$L$cbc_exit
+	jmp	NEAR $L$cbc_exit
 
 
 ALIGN	16
-$L$cbc_slow_prologue::
+$L$cbc_slow_prologue:
 
-	lea	rbp,QWORD PTR[((-88))+rsp]
+	lea	rbp,[((-88))+rsp]
 	and	rbp,-64
 
-	lea	r10,QWORD PTR[((-88-63))+rcx]
+	lea	r10,[((-88-63))+rcx]
 	sub	r10,rbp
 	neg	r10
-	and	r10,03c0h
+	and	r10,0x3c0
 	sub	rbp,r10
 
 	xchg	rbp,rsp
 
-	mov	QWORD PTR[16+rsp],rbp
-$L$cbc_slow_body::
+	mov	QWORD[16+rsp],rbp
+$L$cbc_slow_body:
 
 
 
 
-	mov	QWORD PTR[56+rsp],r8
+	mov	QWORD[56+rsp],r8
 	mov	rbp,r8
 	mov	rbx,r9
 	mov	r9,rsi
@@ -1631,972 +1631,971 @@
 	mov	r15,rcx
 	mov	r10,rdx
 
-	mov	eax,DWORD PTR[240+r15]
-	mov	QWORD PTR[rsp],r15
+	mov	eax,DWORD[240+r15]
+	mov	QWORD[rsp],r15
 	shl	eax,4
-	lea	rax,QWORD PTR[rax*1+r15]
-	mov	QWORD PTR[8+rsp],rax
+	lea	rax,[rax*1+r15]
+	mov	QWORD[8+rsp],rax
 
 
-	lea	r14,QWORD PTR[2048+r14]
-	lea	rax,QWORD PTR[((768-8))+rsp]
+	lea	r14,[2048+r14]
+	lea	rax,[((768-8))+rsp]
 	sub	rax,r14
-	and	rax,0300h
-	lea	r14,QWORD PTR[rax*1+r14]
+	and	rax,0x300
+	lea	r14,[rax*1+r14]
 
 	cmp	rbx,0
-	je	$L$SLOW_DECRYPT
+	je	NEAR $L$SLOW_DECRYPT
 
 
 	test	r10,-16
-	mov	eax,DWORD PTR[rbp]
-	mov	ebx,DWORD PTR[4+rbp]
-	mov	ecx,DWORD PTR[8+rbp]
-	mov	edx,DWORD PTR[12+rbp]
-	jz	$L$cbc_slow_enc_tail
+	mov	eax,DWORD[rbp]
+	mov	ebx,DWORD[4+rbp]
+	mov	ecx,DWORD[8+rbp]
+	mov	edx,DWORD[12+rbp]
+	jz	NEAR $L$cbc_slow_enc_tail
 
 ALIGN	4
-$L$cbc_slow_enc_loop::
-	xor	eax,DWORD PTR[r8]
-	xor	ebx,DWORD PTR[4+r8]
-	xor	ecx,DWORD PTR[8+r8]
-	xor	edx,DWORD PTR[12+r8]
-	mov	r15,QWORD PTR[rsp]
-	mov	QWORD PTR[24+rsp],r8
-	mov	QWORD PTR[32+rsp],r9
-	mov	QWORD PTR[40+rsp],r10
+$L$cbc_slow_enc_loop:
+	xor	eax,DWORD[r8]
+	xor	ebx,DWORD[4+r8]
+	xor	ecx,DWORD[8+r8]
+	xor	edx,DWORD[12+r8]
+	mov	r15,QWORD[rsp]
+	mov	QWORD[24+rsp],r8
+	mov	QWORD[32+rsp],r9
+	mov	QWORD[40+rsp],r10
 
 	call	_x86_64_AES_encrypt_compact
 
-	mov	r8,QWORD PTR[24+rsp]
-	mov	r9,QWORD PTR[32+rsp]
-	mov	r10,QWORD PTR[40+rsp]
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	r8,QWORD[24+rsp]
+	mov	r9,QWORD[32+rsp]
+	mov	r10,QWORD[40+rsp]
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	lea	r8,QWORD PTR[16+r8]
-	lea	r9,QWORD PTR[16+r9]
+	lea	r8,[16+r8]
+	lea	r9,[16+r9]
 	sub	r10,16
 	test	r10,-16
-	jnz	$L$cbc_slow_enc_loop
+	jnz	NEAR $L$cbc_slow_enc_loop
 	test	r10,15
-	jnz	$L$cbc_slow_enc_tail
-	mov	rbp,QWORD PTR[56+rsp]
-	mov	DWORD PTR[rbp],eax
-	mov	DWORD PTR[4+rbp],ebx
-	mov	DWORD PTR[8+rbp],ecx
-	mov	DWORD PTR[12+rbp],edx
+	jnz	NEAR $L$cbc_slow_enc_tail
+	mov	rbp,QWORD[56+rsp]
+	mov	DWORD[rbp],eax
+	mov	DWORD[4+rbp],ebx
+	mov	DWORD[8+rbp],ecx
+	mov	DWORD[12+rbp],edx
 
-	jmp	$L$cbc_exit
+	jmp	NEAR $L$cbc_exit
 
 ALIGN	4
-$L$cbc_slow_enc_tail::
+$L$cbc_slow_enc_tail:
 	mov	r11,rax
 	mov	r12,rcx
 	mov	rcx,r10
 	mov	rsi,r8
 	mov	rdi,r9
-	DD	09066A4F3h
+	DD	0x9066A4F3
 	mov	rcx,16
 	sub	rcx,r10
 	xor	rax,rax
-	DD	09066AAF3h
+	DD	0x9066AAF3
 	mov	r8,r9
 	mov	r10,16
 	mov	rax,r11
 	mov	rcx,r12
-	jmp	$L$cbc_slow_enc_loop
+	jmp	NEAR $L$cbc_slow_enc_loop
 
 ALIGN	16
-$L$SLOW_DECRYPT::
+$L$SLOW_DECRYPT:
 	shr	rax,3
 	add	r14,rax
 
-	mov	r11,QWORD PTR[rbp]
-	mov	r12,QWORD PTR[8+rbp]
-	mov	QWORD PTR[((0+64))+rsp],r11
-	mov	QWORD PTR[((8+64))+rsp],r12
+	mov	r11,QWORD[rbp]
+	mov	r12,QWORD[8+rbp]
+	mov	QWORD[((0+64))+rsp],r11
+	mov	QWORD[((8+64))+rsp],r12
 
 ALIGN	4
-$L$cbc_slow_dec_loop::
-	mov	eax,DWORD PTR[r8]
-	mov	ebx,DWORD PTR[4+r8]
-	mov	ecx,DWORD PTR[8+r8]
-	mov	edx,DWORD PTR[12+r8]
-	mov	r15,QWORD PTR[rsp]
-	mov	QWORD PTR[24+rsp],r8
-	mov	QWORD PTR[32+rsp],r9
-	mov	QWORD PTR[40+rsp],r10
+$L$cbc_slow_dec_loop:
+	mov	eax,DWORD[r8]
+	mov	ebx,DWORD[4+r8]
+	mov	ecx,DWORD[8+r8]
+	mov	edx,DWORD[12+r8]
+	mov	r15,QWORD[rsp]
+	mov	QWORD[24+rsp],r8
+	mov	QWORD[32+rsp],r9
+	mov	QWORD[40+rsp],r10
 
 	call	_x86_64_AES_decrypt_compact
 
-	mov	r8,QWORD PTR[24+rsp]
-	mov	r9,QWORD PTR[32+rsp]
-	mov	r10,QWORD PTR[40+rsp]
-	xor	eax,DWORD PTR[((0+64))+rsp]
-	xor	ebx,DWORD PTR[((4+64))+rsp]
-	xor	ecx,DWORD PTR[((8+64))+rsp]
-	xor	edx,DWORD PTR[((12+64))+rsp]
+	mov	r8,QWORD[24+rsp]
+	mov	r9,QWORD[32+rsp]
+	mov	r10,QWORD[40+rsp]
+	xor	eax,DWORD[((0+64))+rsp]
+	xor	ebx,DWORD[((4+64))+rsp]
+	xor	ecx,DWORD[((8+64))+rsp]
+	xor	edx,DWORD[((12+64))+rsp]
 
-	mov	r11,QWORD PTR[r8]
-	mov	r12,QWORD PTR[8+r8]
+	mov	r11,QWORD[r8]
+	mov	r12,QWORD[8+r8]
 	sub	r10,16
-	jc	$L$cbc_slow_dec_partial
-	jz	$L$cbc_slow_dec_done
+	jc	NEAR $L$cbc_slow_dec_partial
+	jz	NEAR $L$cbc_slow_dec_done
 
-	mov	QWORD PTR[((0+64))+rsp],r11
-	mov	QWORD PTR[((8+64))+rsp],r12
+	mov	QWORD[((0+64))+rsp],r11
+	mov	QWORD[((8+64))+rsp],r12
 
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	lea	r8,QWORD PTR[16+r8]
-	lea	r9,QWORD PTR[16+r9]
-	jmp	$L$cbc_slow_dec_loop
-$L$cbc_slow_dec_done::
-	mov	rdi,QWORD PTR[56+rsp]
-	mov	QWORD PTR[rdi],r11
-	mov	QWORD PTR[8+rdi],r12
+	lea	r8,[16+r8]
+	lea	r9,[16+r9]
+	jmp	NEAR $L$cbc_slow_dec_loop
+$L$cbc_slow_dec_done:
+	mov	rdi,QWORD[56+rsp]
+	mov	QWORD[rdi],r11
+	mov	QWORD[8+rdi],r12
 
-	mov	DWORD PTR[r9],eax
-	mov	DWORD PTR[4+r9],ebx
-	mov	DWORD PTR[8+r9],ecx
-	mov	DWORD PTR[12+r9],edx
+	mov	DWORD[r9],eax
+	mov	DWORD[4+r9],ebx
+	mov	DWORD[8+r9],ecx
+	mov	DWORD[12+r9],edx
 
-	jmp	$L$cbc_exit
+	jmp	NEAR $L$cbc_exit
 
 ALIGN	4
-$L$cbc_slow_dec_partial::
-	mov	rdi,QWORD PTR[56+rsp]
-	mov	QWORD PTR[rdi],r11
-	mov	QWORD PTR[8+rdi],r12
+$L$cbc_slow_dec_partial:
+	mov	rdi,QWORD[56+rsp]
+	mov	QWORD[rdi],r11
+	mov	QWORD[8+rdi],r12
 
-	mov	DWORD PTR[((0+64))+rsp],eax
-	mov	DWORD PTR[((4+64))+rsp],ebx
-	mov	DWORD PTR[((8+64))+rsp],ecx
-	mov	DWORD PTR[((12+64))+rsp],edx
+	mov	DWORD[((0+64))+rsp],eax
+	mov	DWORD[((4+64))+rsp],ebx
+	mov	DWORD[((8+64))+rsp],ecx
+	mov	DWORD[((12+64))+rsp],edx
 
 	mov	rdi,r9
-	lea	rsi,QWORD PTR[64+rsp]
-	lea	rcx,QWORD PTR[16+r10]
-	DD	09066A4F3h
-	jmp	$L$cbc_exit
+	lea	rsi,[64+rsp]
+	lea	rcx,[16+r10]
+	DD	0x9066A4F3
+	jmp	NEAR $L$cbc_exit
 
 ALIGN	16
-$L$cbc_exit::
-	mov	rsi,QWORD PTR[16+rsp]
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$cbc_popfq::
+$L$cbc_exit:
+	mov	rsi,QWORD[16+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$cbc_popfq:
 	popfq
-$L$cbc_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$cbc_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_AES_cbc_encrypt::
-asm_AES_cbc_encrypt	ENDP
+$L$SEH_end_asm_AES_cbc_encrypt:
 ALIGN	64
-$L$AES_Te::
-	DD	0a56363c6h,0a56363c6h
-	DD	0847c7cf8h,0847c7cf8h
-	DD	0997777eeh,0997777eeh
-	DD	08d7b7bf6h,08d7b7bf6h
-	DD	00df2f2ffh,00df2f2ffh
-	DD	0bd6b6bd6h,0bd6b6bd6h
-	DD	0b16f6fdeh,0b16f6fdeh
-	DD	054c5c591h,054c5c591h
-	DD	050303060h,050303060h
-	DD	003010102h,003010102h
-	DD	0a96767ceh,0a96767ceh
-	DD	07d2b2b56h,07d2b2b56h
-	DD	019fefee7h,019fefee7h
-	DD	062d7d7b5h,062d7d7b5h
-	DD	0e6abab4dh,0e6abab4dh
-	DD	09a7676ech,09a7676ech
-	DD	045caca8fh,045caca8fh
-	DD	09d82821fh,09d82821fh
-	DD	040c9c989h,040c9c989h
-	DD	0877d7dfah,0877d7dfah
-	DD	015fafaefh,015fafaefh
-	DD	0eb5959b2h,0eb5959b2h
-	DD	0c947478eh,0c947478eh
-	DD	00bf0f0fbh,00bf0f0fbh
-	DD	0ecadad41h,0ecadad41h
-	DD	067d4d4b3h,067d4d4b3h
-	DD	0fda2a25fh,0fda2a25fh
-	DD	0eaafaf45h,0eaafaf45h
-	DD	0bf9c9c23h,0bf9c9c23h
-	DD	0f7a4a453h,0f7a4a453h
-	DD	0967272e4h,0967272e4h
-	DD	05bc0c09bh,05bc0c09bh
-	DD	0c2b7b775h,0c2b7b775h
-	DD	01cfdfde1h,01cfdfde1h
-	DD	0ae93933dh,0ae93933dh
-	DD	06a26264ch,06a26264ch
-	DD	05a36366ch,05a36366ch
-	DD	0413f3f7eh,0413f3f7eh
-	DD	002f7f7f5h,002f7f7f5h
-	DD	04fcccc83h,04fcccc83h
-	DD	05c343468h,05c343468h
-	DD	0f4a5a551h,0f4a5a551h
-	DD	034e5e5d1h,034e5e5d1h
-	DD	008f1f1f9h,008f1f1f9h
-	DD	0937171e2h,0937171e2h
-	DD	073d8d8abh,073d8d8abh
-	DD	053313162h,053313162h
-	DD	03f15152ah,03f15152ah
-	DD	00c040408h,00c040408h
-	DD	052c7c795h,052c7c795h
-	DD	065232346h,065232346h
-	DD	05ec3c39dh,05ec3c39dh
-	DD	028181830h,028181830h
-	DD	0a1969637h,0a1969637h
-	DD	00f05050ah,00f05050ah
-	DD	0b59a9a2fh,0b59a9a2fh
-	DD	00907070eh,00907070eh
-	DD	036121224h,036121224h
-	DD	09b80801bh,09b80801bh
-	DD	03de2e2dfh,03de2e2dfh
-	DD	026ebebcdh,026ebebcdh
-	DD	06927274eh,06927274eh
-	DD	0cdb2b27fh,0cdb2b27fh
-	DD	09f7575eah,09f7575eah
-	DD	01b090912h,01b090912h
-	DD	09e83831dh,09e83831dh
-	DD	0742c2c58h,0742c2c58h
-	DD	02e1a1a34h,02e1a1a34h
-	DD	02d1b1b36h,02d1b1b36h
-	DD	0b26e6edch,0b26e6edch
-	DD	0ee5a5ab4h,0ee5a5ab4h
-	DD	0fba0a05bh,0fba0a05bh
-	DD	0f65252a4h,0f65252a4h
-	DD	04d3b3b76h,04d3b3b76h
-	DD	061d6d6b7h,061d6d6b7h
-	DD	0ceb3b37dh,0ceb3b37dh
-	DD	07b292952h,07b292952h
-	DD	03ee3e3ddh,03ee3e3ddh
-	DD	0712f2f5eh,0712f2f5eh
-	DD	097848413h,097848413h
-	DD	0f55353a6h,0f55353a6h
-	DD	068d1d1b9h,068d1d1b9h
-	DD	000000000h,000000000h
-	DD	02cededc1h,02cededc1h
-	DD	060202040h,060202040h
-	DD	01ffcfce3h,01ffcfce3h
-	DD	0c8b1b179h,0c8b1b179h
-	DD	0ed5b5bb6h,0ed5b5bb6h
-	DD	0be6a6ad4h,0be6a6ad4h
-	DD	046cbcb8dh,046cbcb8dh
-	DD	0d9bebe67h,0d9bebe67h
-	DD	04b393972h,04b393972h
-	DD	0de4a4a94h,0de4a4a94h
-	DD	0d44c4c98h,0d44c4c98h
-	DD	0e85858b0h,0e85858b0h
-	DD	04acfcf85h,04acfcf85h
-	DD	06bd0d0bbh,06bd0d0bbh
-	DD	02aefefc5h,02aefefc5h
-	DD	0e5aaaa4fh,0e5aaaa4fh
-	DD	016fbfbedh,016fbfbedh
-	DD	0c5434386h,0c5434386h
-	DD	0d74d4d9ah,0d74d4d9ah
-	DD	055333366h,055333366h
-	DD	094858511h,094858511h
-	DD	0cf45458ah,0cf45458ah
-	DD	010f9f9e9h,010f9f9e9h
-	DD	006020204h,006020204h
-	DD	0817f7ffeh,0817f7ffeh
-	DD	0f05050a0h,0f05050a0h
-	DD	0443c3c78h,0443c3c78h
-	DD	0ba9f9f25h,0ba9f9f25h
-	DD	0e3a8a84bh,0e3a8a84bh
-	DD	0f35151a2h,0f35151a2h
-	DD	0fea3a35dh,0fea3a35dh
-	DD	0c0404080h,0c0404080h
-	DD	08a8f8f05h,08a8f8f05h
-	DD	0ad92923fh,0ad92923fh
-	DD	0bc9d9d21h,0bc9d9d21h
-	DD	048383870h,048383870h
-	DD	004f5f5f1h,004f5f5f1h
-	DD	0dfbcbc63h,0dfbcbc63h
-	DD	0c1b6b677h,0c1b6b677h
-	DD	075dadaafh,075dadaafh
-	DD	063212142h,063212142h
-	DD	030101020h,030101020h
-	DD	01affffe5h,01affffe5h
-	DD	00ef3f3fdh,00ef3f3fdh
-	DD	06dd2d2bfh,06dd2d2bfh
-	DD	04ccdcd81h,04ccdcd81h
-	DD	0140c0c18h,0140c0c18h
-	DD	035131326h,035131326h
-	DD	02fececc3h,02fececc3h
-	DD	0e15f5fbeh,0e15f5fbeh
-	DD	0a2979735h,0a2979735h
-	DD	0cc444488h,0cc444488h
-	DD	03917172eh,03917172eh
-	DD	057c4c493h,057c4c493h
-	DD	0f2a7a755h,0f2a7a755h
-	DD	0827e7efch,0827e7efch
-	DD	0473d3d7ah,0473d3d7ah
-	DD	0ac6464c8h,0ac6464c8h
-	DD	0e75d5dbah,0e75d5dbah
-	DD	02b191932h,02b191932h
-	DD	0957373e6h,0957373e6h
-	DD	0a06060c0h,0a06060c0h
-	DD	098818119h,098818119h
-	DD	0d14f4f9eh,0d14f4f9eh
-	DD	07fdcdca3h,07fdcdca3h
-	DD	066222244h,066222244h
-	DD	07e2a2a54h,07e2a2a54h
-	DD	0ab90903bh,0ab90903bh
-	DD	08388880bh,08388880bh
-	DD	0ca46468ch,0ca46468ch
-	DD	029eeeec7h,029eeeec7h
-	DD	0d3b8b86bh,0d3b8b86bh
-	DD	03c141428h,03c141428h
-	DD	079dedea7h,079dedea7h
-	DD	0e25e5ebch,0e25e5ebch
-	DD	01d0b0b16h,01d0b0b16h
-	DD	076dbdbadh,076dbdbadh
-	DD	03be0e0dbh,03be0e0dbh
-	DD	056323264h,056323264h
-	DD	04e3a3a74h,04e3a3a74h
-	DD	01e0a0a14h,01e0a0a14h
-	DD	0db494992h,0db494992h
-	DD	00a06060ch,00a06060ch
-	DD	06c242448h,06c242448h
-	DD	0e45c5cb8h,0e45c5cb8h
-	DD	05dc2c29fh,05dc2c29fh
-	DD	06ed3d3bdh,06ed3d3bdh
-	DD	0efacac43h,0efacac43h
-	DD	0a66262c4h,0a66262c4h
-	DD	0a8919139h,0a8919139h
-	DD	0a4959531h,0a4959531h
-	DD	037e4e4d3h,037e4e4d3h
-	DD	08b7979f2h,08b7979f2h
-	DD	032e7e7d5h,032e7e7d5h
-	DD	043c8c88bh,043c8c88bh
-	DD	05937376eh,05937376eh
-	DD	0b76d6ddah,0b76d6ddah
-	DD	08c8d8d01h,08c8d8d01h
-	DD	064d5d5b1h,064d5d5b1h
-	DD	0d24e4e9ch,0d24e4e9ch
-	DD	0e0a9a949h,0e0a9a949h
-	DD	0b46c6cd8h,0b46c6cd8h
-	DD	0fa5656ach,0fa5656ach
-	DD	007f4f4f3h,007f4f4f3h
-	DD	025eaeacfh,025eaeacfh
-	DD	0af6565cah,0af6565cah
-	DD	08e7a7af4h,08e7a7af4h
-	DD	0e9aeae47h,0e9aeae47h
-	DD	018080810h,018080810h
-	DD	0d5baba6fh,0d5baba6fh
-	DD	0887878f0h,0887878f0h
-	DD	06f25254ah,06f25254ah
-	DD	0722e2e5ch,0722e2e5ch
-	DD	0241c1c38h,0241c1c38h
-	DD	0f1a6a657h,0f1a6a657h
-	DD	0c7b4b473h,0c7b4b473h
-	DD	051c6c697h,051c6c697h
-	DD	023e8e8cbh,023e8e8cbh
-	DD	07cdddda1h,07cdddda1h
-	DD	09c7474e8h,09c7474e8h
-	DD	0211f1f3eh,0211f1f3eh
-	DD	0dd4b4b96h,0dd4b4b96h
-	DD	0dcbdbd61h,0dcbdbd61h
-	DD	0868b8b0dh,0868b8b0dh
-	DD	0858a8a0fh,0858a8a0fh
-	DD	0907070e0h,0907070e0h
-	DD	0423e3e7ch,0423e3e7ch
-	DD	0c4b5b571h,0c4b5b571h
-	DD	0aa6666cch,0aa6666cch
-	DD	0d8484890h,0d8484890h
-	DD	005030306h,005030306h
-	DD	001f6f6f7h,001f6f6f7h
-	DD	0120e0e1ch,0120e0e1ch
-	DD	0a36161c2h,0a36161c2h
-	DD	05f35356ah,05f35356ah
-	DD	0f95757aeh,0f95757aeh
-	DD	0d0b9b969h,0d0b9b969h
-	DD	091868617h,091868617h
-	DD	058c1c199h,058c1c199h
-	DD	0271d1d3ah,0271d1d3ah
-	DD	0b99e9e27h,0b99e9e27h
-	DD	038e1e1d9h,038e1e1d9h
-	DD	013f8f8ebh,013f8f8ebh
-	DD	0b398982bh,0b398982bh
-	DD	033111122h,033111122h
-	DD	0bb6969d2h,0bb6969d2h
-	DD	070d9d9a9h,070d9d9a9h
-	DD	0898e8e07h,0898e8e07h
-	DD	0a7949433h,0a7949433h
-	DD	0b69b9b2dh,0b69b9b2dh
-	DD	0221e1e3ch,0221e1e3ch
-	DD	092878715h,092878715h
-	DD	020e9e9c9h,020e9e9c9h
-	DD	049cece87h,049cece87h
-	DD	0ff5555aah,0ff5555aah
-	DD	078282850h,078282850h
-	DD	07adfdfa5h,07adfdfa5h
-	DD	08f8c8c03h,08f8c8c03h
-	DD	0f8a1a159h,0f8a1a159h
-	DD	080898909h,080898909h
-	DD	0170d0d1ah,0170d0d1ah
-	DD	0dabfbf65h,0dabfbf65h
-	DD	031e6e6d7h,031e6e6d7h
-	DD	0c6424284h,0c6424284h
-	DD	0b86868d0h,0b86868d0h
-	DD	0c3414182h,0c3414182h
-	DD	0b0999929h,0b0999929h
-	DD	0772d2d5ah,0772d2d5ah
-	DD	0110f0f1eh,0110f0f1eh
-	DD	0cbb0b07bh,0cbb0b07bh
-	DD	0fc5454a8h,0fc5454a8h
-	DD	0d6bbbb6dh,0d6bbbb6dh
-	DD	03a16162ch,03a16162ch
-DB	063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h
-DB	030h,001h,067h,02bh,0feh,0d7h,0abh,076h
-DB	0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h
-DB	0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h
-DB	0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch
-DB	034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h
-DB	004h,0c7h,023h,0c3h,018h,096h,005h,09ah
-DB	007h,012h,080h,0e2h,0ebh,027h,0b2h,075h
-DB	009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h
-DB	052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h
-DB	053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh
-DB	06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh
-DB	0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h
-DB	045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h
-DB	051h,0a3h,040h,08fh,092h,09dh,038h,0f5h
-DB	0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h
-DB	0cdh,00ch,013h,0ech,05fh,097h,044h,017h
-DB	0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h
-DB	060h,081h,04fh,0dch,022h,02ah,090h,088h
-DB	046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh
-DB	0e0h,032h,03ah,00ah,049h,006h,024h,05ch
-DB	0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h
-DB	0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h
-DB	06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h
-DB	0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h
-DB	0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah
-DB	070h,03eh,0b5h,066h,048h,003h,0f6h,00eh
-DB	061h,035h,057h,0b9h,086h,0c1h,01dh,09eh
-DB	0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h
-DB	09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh
-DB	08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h
-DB	041h,099h,02dh,00fh,0b0h,054h,0bbh,016h
-DB	063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h
-DB	030h,001h,067h,02bh,0feh,0d7h,0abh,076h
-DB	0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h
-DB	0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h
-DB	0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch
-DB	034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h
-DB	004h,0c7h,023h,0c3h,018h,096h,005h,09ah
-DB	007h,012h,080h,0e2h,0ebh,027h,0b2h,075h
-DB	009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h
-DB	052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h
-DB	053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh
-DB	06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh
-DB	0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h
-DB	045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h
-DB	051h,0a3h,040h,08fh,092h,09dh,038h,0f5h
-DB	0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h
-DB	0cdh,00ch,013h,0ech,05fh,097h,044h,017h
-DB	0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h
-DB	060h,081h,04fh,0dch,022h,02ah,090h,088h
-DB	046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh
-DB	0e0h,032h,03ah,00ah,049h,006h,024h,05ch
-DB	0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h
-DB	0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h
-DB	06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h
-DB	0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h
-DB	0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah
-DB	070h,03eh,0b5h,066h,048h,003h,0f6h,00eh
-DB	061h,035h,057h,0b9h,086h,0c1h,01dh,09eh
-DB	0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h
-DB	09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh
-DB	08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h
-DB	041h,099h,02dh,00fh,0b0h,054h,0bbh,016h
-DB	063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h
-DB	030h,001h,067h,02bh,0feh,0d7h,0abh,076h
-DB	0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h
-DB	0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h
-DB	0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch
-DB	034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h
-DB	004h,0c7h,023h,0c3h,018h,096h,005h,09ah
-DB	007h,012h,080h,0e2h,0ebh,027h,0b2h,075h
-DB	009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h
-DB	052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h
-DB	053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh
-DB	06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh
-DB	0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h
-DB	045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h
-DB	051h,0a3h,040h,08fh,092h,09dh,038h,0f5h
-DB	0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h
-DB	0cdh,00ch,013h,0ech,05fh,097h,044h,017h
-DB	0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h
-DB	060h,081h,04fh,0dch,022h,02ah,090h,088h
-DB	046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh
-DB	0e0h,032h,03ah,00ah,049h,006h,024h,05ch
-DB	0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h
-DB	0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h
-DB	06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h
-DB	0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h
-DB	0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah
-DB	070h,03eh,0b5h,066h,048h,003h,0f6h,00eh
-DB	061h,035h,057h,0b9h,086h,0c1h,01dh,09eh
-DB	0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h
-DB	09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh
-DB	08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h
-DB	041h,099h,02dh,00fh,0b0h,054h,0bbh,016h
-DB	063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h
-DB	030h,001h,067h,02bh,0feh,0d7h,0abh,076h
-DB	0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h
-DB	0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h
-DB	0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch
-DB	034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h
-DB	004h,0c7h,023h,0c3h,018h,096h,005h,09ah
-DB	007h,012h,080h,0e2h,0ebh,027h,0b2h,075h
-DB	009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h
-DB	052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h
-DB	053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh
-DB	06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh
-DB	0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h
-DB	045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h
-DB	051h,0a3h,040h,08fh,092h,09dh,038h,0f5h
-DB	0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h
-DB	0cdh,00ch,013h,0ech,05fh,097h,044h,017h
-DB	0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h
-DB	060h,081h,04fh,0dch,022h,02ah,090h,088h
-DB	046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh
-DB	0e0h,032h,03ah,00ah,049h,006h,024h,05ch
-DB	0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h
-DB	0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h
-DB	06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h
-DB	0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h
-DB	0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah
-DB	070h,03eh,0b5h,066h,048h,003h,0f6h,00eh
-DB	061h,035h,057h,0b9h,086h,0c1h,01dh,09eh
-DB	0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h
-DB	09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh
-DB	08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h
-DB	041h,099h,02dh,00fh,0b0h,054h,0bbh,016h
-	DD	000000001h,000000002h,000000004h,000000008h
-	DD	000000010h,000000020h,000000040h,000000080h
-	DD	00000001bh,000000036h,080808080h,080808080h
-	DD	0fefefefeh,0fefefefeh,01b1b1b1bh,01b1b1b1bh
+$L$AES_Te:
+	DD	0xa56363c6,0xa56363c6
+	DD	0x847c7cf8,0x847c7cf8
+	DD	0x997777ee,0x997777ee
+	DD	0x8d7b7bf6,0x8d7b7bf6
+	DD	0x0df2f2ff,0x0df2f2ff
+	DD	0xbd6b6bd6,0xbd6b6bd6
+	DD	0xb16f6fde,0xb16f6fde
+	DD	0x54c5c591,0x54c5c591
+	DD	0x50303060,0x50303060
+	DD	0x03010102,0x03010102
+	DD	0xa96767ce,0xa96767ce
+	DD	0x7d2b2b56,0x7d2b2b56
+	DD	0x19fefee7,0x19fefee7
+	DD	0x62d7d7b5,0x62d7d7b5
+	DD	0xe6abab4d,0xe6abab4d
+	DD	0x9a7676ec,0x9a7676ec
+	DD	0x45caca8f,0x45caca8f
+	DD	0x9d82821f,0x9d82821f
+	DD	0x40c9c989,0x40c9c989
+	DD	0x877d7dfa,0x877d7dfa
+	DD	0x15fafaef,0x15fafaef
+	DD	0xeb5959b2,0xeb5959b2
+	DD	0xc947478e,0xc947478e
+	DD	0x0bf0f0fb,0x0bf0f0fb
+	DD	0xecadad41,0xecadad41
+	DD	0x67d4d4b3,0x67d4d4b3
+	DD	0xfda2a25f,0xfda2a25f
+	DD	0xeaafaf45,0xeaafaf45
+	DD	0xbf9c9c23,0xbf9c9c23
+	DD	0xf7a4a453,0xf7a4a453
+	DD	0x967272e4,0x967272e4
+	DD	0x5bc0c09b,0x5bc0c09b
+	DD	0xc2b7b775,0xc2b7b775
+	DD	0x1cfdfde1,0x1cfdfde1
+	DD	0xae93933d,0xae93933d
+	DD	0x6a26264c,0x6a26264c
+	DD	0x5a36366c,0x5a36366c
+	DD	0x413f3f7e,0x413f3f7e
+	DD	0x02f7f7f5,0x02f7f7f5
+	DD	0x4fcccc83,0x4fcccc83
+	DD	0x5c343468,0x5c343468
+	DD	0xf4a5a551,0xf4a5a551
+	DD	0x34e5e5d1,0x34e5e5d1
+	DD	0x08f1f1f9,0x08f1f1f9
+	DD	0x937171e2,0x937171e2
+	DD	0x73d8d8ab,0x73d8d8ab
+	DD	0x53313162,0x53313162
+	DD	0x3f15152a,0x3f15152a
+	DD	0x0c040408,0x0c040408
+	DD	0x52c7c795,0x52c7c795
+	DD	0x65232346,0x65232346
+	DD	0x5ec3c39d,0x5ec3c39d
+	DD	0x28181830,0x28181830
+	DD	0xa1969637,0xa1969637
+	DD	0x0f05050a,0x0f05050a
+	DD	0xb59a9a2f,0xb59a9a2f
+	DD	0x0907070e,0x0907070e
+	DD	0x36121224,0x36121224
+	DD	0x9b80801b,0x9b80801b
+	DD	0x3de2e2df,0x3de2e2df
+	DD	0x26ebebcd,0x26ebebcd
+	DD	0x6927274e,0x6927274e
+	DD	0xcdb2b27f,0xcdb2b27f
+	DD	0x9f7575ea,0x9f7575ea
+	DD	0x1b090912,0x1b090912
+	DD	0x9e83831d,0x9e83831d
+	DD	0x742c2c58,0x742c2c58
+	DD	0x2e1a1a34,0x2e1a1a34
+	DD	0x2d1b1b36,0x2d1b1b36
+	DD	0xb26e6edc,0xb26e6edc
+	DD	0xee5a5ab4,0xee5a5ab4
+	DD	0xfba0a05b,0xfba0a05b
+	DD	0xf65252a4,0xf65252a4
+	DD	0x4d3b3b76,0x4d3b3b76
+	DD	0x61d6d6b7,0x61d6d6b7
+	DD	0xceb3b37d,0xceb3b37d
+	DD	0x7b292952,0x7b292952
+	DD	0x3ee3e3dd,0x3ee3e3dd
+	DD	0x712f2f5e,0x712f2f5e
+	DD	0x97848413,0x97848413
+	DD	0xf55353a6,0xf55353a6
+	DD	0x68d1d1b9,0x68d1d1b9
+	DD	0x00000000,0x00000000
+	DD	0x2cededc1,0x2cededc1
+	DD	0x60202040,0x60202040
+	DD	0x1ffcfce3,0x1ffcfce3
+	DD	0xc8b1b179,0xc8b1b179
+	DD	0xed5b5bb6,0xed5b5bb6
+	DD	0xbe6a6ad4,0xbe6a6ad4
+	DD	0x46cbcb8d,0x46cbcb8d
+	DD	0xd9bebe67,0xd9bebe67
+	DD	0x4b393972,0x4b393972
+	DD	0xde4a4a94,0xde4a4a94
+	DD	0xd44c4c98,0xd44c4c98
+	DD	0xe85858b0,0xe85858b0
+	DD	0x4acfcf85,0x4acfcf85
+	DD	0x6bd0d0bb,0x6bd0d0bb
+	DD	0x2aefefc5,0x2aefefc5
+	DD	0xe5aaaa4f,0xe5aaaa4f
+	DD	0x16fbfbed,0x16fbfbed
+	DD	0xc5434386,0xc5434386
+	DD	0xd74d4d9a,0xd74d4d9a
+	DD	0x55333366,0x55333366
+	DD	0x94858511,0x94858511
+	DD	0xcf45458a,0xcf45458a
+	DD	0x10f9f9e9,0x10f9f9e9
+	DD	0x06020204,0x06020204
+	DD	0x817f7ffe,0x817f7ffe
+	DD	0xf05050a0,0xf05050a0
+	DD	0x443c3c78,0x443c3c78
+	DD	0xba9f9f25,0xba9f9f25
+	DD	0xe3a8a84b,0xe3a8a84b
+	DD	0xf35151a2,0xf35151a2
+	DD	0xfea3a35d,0xfea3a35d
+	DD	0xc0404080,0xc0404080
+	DD	0x8a8f8f05,0x8a8f8f05
+	DD	0xad92923f,0xad92923f
+	DD	0xbc9d9d21,0xbc9d9d21
+	DD	0x48383870,0x48383870
+	DD	0x04f5f5f1,0x04f5f5f1
+	DD	0xdfbcbc63,0xdfbcbc63
+	DD	0xc1b6b677,0xc1b6b677
+	DD	0x75dadaaf,0x75dadaaf
+	DD	0x63212142,0x63212142
+	DD	0x30101020,0x30101020
+	DD	0x1affffe5,0x1affffe5
+	DD	0x0ef3f3fd,0x0ef3f3fd
+	DD	0x6dd2d2bf,0x6dd2d2bf
+	DD	0x4ccdcd81,0x4ccdcd81
+	DD	0x140c0c18,0x140c0c18
+	DD	0x35131326,0x35131326
+	DD	0x2fececc3,0x2fececc3
+	DD	0xe15f5fbe,0xe15f5fbe
+	DD	0xa2979735,0xa2979735
+	DD	0xcc444488,0xcc444488
+	DD	0x3917172e,0x3917172e
+	DD	0x57c4c493,0x57c4c493
+	DD	0xf2a7a755,0xf2a7a755
+	DD	0x827e7efc,0x827e7efc
+	DD	0x473d3d7a,0x473d3d7a
+	DD	0xac6464c8,0xac6464c8
+	DD	0xe75d5dba,0xe75d5dba
+	DD	0x2b191932,0x2b191932
+	DD	0x957373e6,0x957373e6
+	DD	0xa06060c0,0xa06060c0
+	DD	0x98818119,0x98818119
+	DD	0xd14f4f9e,0xd14f4f9e
+	DD	0x7fdcdca3,0x7fdcdca3
+	DD	0x66222244,0x66222244
+	DD	0x7e2a2a54,0x7e2a2a54
+	DD	0xab90903b,0xab90903b
+	DD	0x8388880b,0x8388880b
+	DD	0xca46468c,0xca46468c
+	DD	0x29eeeec7,0x29eeeec7
+	DD	0xd3b8b86b,0xd3b8b86b
+	DD	0x3c141428,0x3c141428
+	DD	0x79dedea7,0x79dedea7
+	DD	0xe25e5ebc,0xe25e5ebc
+	DD	0x1d0b0b16,0x1d0b0b16
+	DD	0x76dbdbad,0x76dbdbad
+	DD	0x3be0e0db,0x3be0e0db
+	DD	0x56323264,0x56323264
+	DD	0x4e3a3a74,0x4e3a3a74
+	DD	0x1e0a0a14,0x1e0a0a14
+	DD	0xdb494992,0xdb494992
+	DD	0x0a06060c,0x0a06060c
+	DD	0x6c242448,0x6c242448
+	DD	0xe45c5cb8,0xe45c5cb8
+	DD	0x5dc2c29f,0x5dc2c29f
+	DD	0x6ed3d3bd,0x6ed3d3bd
+	DD	0xefacac43,0xefacac43
+	DD	0xa66262c4,0xa66262c4
+	DD	0xa8919139,0xa8919139
+	DD	0xa4959531,0xa4959531
+	DD	0x37e4e4d3,0x37e4e4d3
+	DD	0x8b7979f2,0x8b7979f2
+	DD	0x32e7e7d5,0x32e7e7d5
+	DD	0x43c8c88b,0x43c8c88b
+	DD	0x5937376e,0x5937376e
+	DD	0xb76d6dda,0xb76d6dda
+	DD	0x8c8d8d01,0x8c8d8d01
+	DD	0x64d5d5b1,0x64d5d5b1
+	DD	0xd24e4e9c,0xd24e4e9c
+	DD	0xe0a9a949,0xe0a9a949
+	DD	0xb46c6cd8,0xb46c6cd8
+	DD	0xfa5656ac,0xfa5656ac
+	DD	0x07f4f4f3,0x07f4f4f3
+	DD	0x25eaeacf,0x25eaeacf
+	DD	0xaf6565ca,0xaf6565ca
+	DD	0x8e7a7af4,0x8e7a7af4
+	DD	0xe9aeae47,0xe9aeae47
+	DD	0x18080810,0x18080810
+	DD	0xd5baba6f,0xd5baba6f
+	DD	0x887878f0,0x887878f0
+	DD	0x6f25254a,0x6f25254a
+	DD	0x722e2e5c,0x722e2e5c
+	DD	0x241c1c38,0x241c1c38
+	DD	0xf1a6a657,0xf1a6a657
+	DD	0xc7b4b473,0xc7b4b473
+	DD	0x51c6c697,0x51c6c697
+	DD	0x23e8e8cb,0x23e8e8cb
+	DD	0x7cdddda1,0x7cdddda1
+	DD	0x9c7474e8,0x9c7474e8
+	DD	0x211f1f3e,0x211f1f3e
+	DD	0xdd4b4b96,0xdd4b4b96
+	DD	0xdcbdbd61,0xdcbdbd61
+	DD	0x868b8b0d,0x868b8b0d
+	DD	0x858a8a0f,0x858a8a0f
+	DD	0x907070e0,0x907070e0
+	DD	0x423e3e7c,0x423e3e7c
+	DD	0xc4b5b571,0xc4b5b571
+	DD	0xaa6666cc,0xaa6666cc
+	DD	0xd8484890,0xd8484890
+	DD	0x05030306,0x05030306
+	DD	0x01f6f6f7,0x01f6f6f7
+	DD	0x120e0e1c,0x120e0e1c
+	DD	0xa36161c2,0xa36161c2
+	DD	0x5f35356a,0x5f35356a
+	DD	0xf95757ae,0xf95757ae
+	DD	0xd0b9b969,0xd0b9b969
+	DD	0x91868617,0x91868617
+	DD	0x58c1c199,0x58c1c199
+	DD	0x271d1d3a,0x271d1d3a
+	DD	0xb99e9e27,0xb99e9e27
+	DD	0x38e1e1d9,0x38e1e1d9
+	DD	0x13f8f8eb,0x13f8f8eb
+	DD	0xb398982b,0xb398982b
+	DD	0x33111122,0x33111122
+	DD	0xbb6969d2,0xbb6969d2
+	DD	0x70d9d9a9,0x70d9d9a9
+	DD	0x898e8e07,0x898e8e07
+	DD	0xa7949433,0xa7949433
+	DD	0xb69b9b2d,0xb69b9b2d
+	DD	0x221e1e3c,0x221e1e3c
+	DD	0x92878715,0x92878715
+	DD	0x20e9e9c9,0x20e9e9c9
+	DD	0x49cece87,0x49cece87
+	DD	0xff5555aa,0xff5555aa
+	DD	0x78282850,0x78282850
+	DD	0x7adfdfa5,0x7adfdfa5
+	DD	0x8f8c8c03,0x8f8c8c03
+	DD	0xf8a1a159,0xf8a1a159
+	DD	0x80898909,0x80898909
+	DD	0x170d0d1a,0x170d0d1a
+	DD	0xdabfbf65,0xdabfbf65
+	DD	0x31e6e6d7,0x31e6e6d7
+	DD	0xc6424284,0xc6424284
+	DD	0xb86868d0,0xb86868d0
+	DD	0xc3414182,0xc3414182
+	DD	0xb0999929,0xb0999929
+	DD	0x772d2d5a,0x772d2d5a
+	DD	0x110f0f1e,0x110f0f1e
+	DD	0xcbb0b07b,0xcbb0b07b
+	DD	0xfc5454a8,0xfc5454a8
+	DD	0xd6bbbb6d,0xd6bbbb6d
+	DD	0x3a16162c,0x3a16162c
+DB	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
+DB	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
+DB	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
+DB	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
+DB	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
+DB	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
+DB	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
+DB	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
+DB	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
+DB	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
+DB	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
+DB	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
+DB	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
+DB	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
+DB	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
+DB	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
+DB	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
+DB	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
+DB	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
+DB	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
+DB	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
+DB	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
+DB	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
+DB	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
+DB	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
+DB	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
+DB	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
+DB	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
+DB	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
+DB	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
+DB	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
+DB	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
+DB	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
+DB	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
+DB	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
+DB	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
+DB	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
+DB	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
+DB	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
+DB	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
+DB	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
+DB	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
+DB	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
+DB	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
+DB	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
+DB	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
+DB	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
+DB	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
+DB	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
+DB	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
+DB	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
+DB	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
+DB	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
+DB	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
+DB	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
+DB	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
+DB	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
+DB	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
+DB	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
+DB	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
+DB	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
+DB	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
+DB	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
+DB	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
+DB	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
+DB	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
+DB	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
+DB	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
+DB	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
+DB	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
+DB	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
+DB	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
+DB	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
+DB	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
+DB	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
+DB	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
+DB	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
+DB	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
+DB	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
+DB	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
+DB	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
+DB	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
+DB	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
+DB	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
+DB	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
+DB	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
+DB	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
+DB	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
+DB	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
+DB	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
+DB	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
+DB	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
+DB	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
+DB	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
+DB	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
+DB	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
+DB	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
+DB	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
+DB	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
+DB	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
+DB	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
+DB	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
+DB	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
+DB	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
+DB	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
+DB	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
+DB	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
+DB	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
+DB	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
+DB	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
+DB	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
+DB	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
+DB	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
+DB	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
+DB	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
+DB	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
+DB	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
+DB	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
+DB	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
+DB	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
+DB	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
+DB	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
+DB	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
+DB	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
+DB	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
+DB	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
+DB	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
+DB	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
+	DD	0x00000001,0x00000002,0x00000004,0x00000008
+	DD	0x00000010,0x00000020,0x00000040,0x00000080
+	DD	0x0000001b,0x00000036,0x80808080,0x80808080
+	DD	0xfefefefe,0xfefefefe,0x1b1b1b1b,0x1b1b1b1b
 ALIGN	64
-$L$AES_Td::
-	DD	050a7f451h,050a7f451h
-	DD	05365417eh,05365417eh
-	DD	0c3a4171ah,0c3a4171ah
-	DD	0965e273ah,0965e273ah
-	DD	0cb6bab3bh,0cb6bab3bh
-	DD	0f1459d1fh,0f1459d1fh
-	DD	0ab58faach,0ab58faach
-	DD	09303e34bh,09303e34bh
-	DD	055fa3020h,055fa3020h
-	DD	0f66d76adh,0f66d76adh
-	DD	09176cc88h,09176cc88h
-	DD	0254c02f5h,0254c02f5h
-	DD	0fcd7e54fh,0fcd7e54fh
-	DD	0d7cb2ac5h,0d7cb2ac5h
-	DD	080443526h,080443526h
-	DD	08fa362b5h,08fa362b5h
-	DD	0495ab1deh,0495ab1deh
-	DD	0671bba25h,0671bba25h
-	DD	0980eea45h,0980eea45h
-	DD	0e1c0fe5dh,0e1c0fe5dh
-	DD	002752fc3h,002752fc3h
-	DD	012f04c81h,012f04c81h
-	DD	0a397468dh,0a397468dh
-	DD	0c6f9d36bh,0c6f9d36bh
-	DD	0e75f8f03h,0e75f8f03h
-	DD	0959c9215h,0959c9215h
-	DD	0eb7a6dbfh,0eb7a6dbfh
-	DD	0da595295h,0da595295h
-	DD	02d83bed4h,02d83bed4h
-	DD	0d3217458h,0d3217458h
-	DD	02969e049h,02969e049h
-	DD	044c8c98eh,044c8c98eh
-	DD	06a89c275h,06a89c275h
-	DD	078798ef4h,078798ef4h
-	DD	06b3e5899h,06b3e5899h
-	DD	0dd71b927h,0dd71b927h
-	DD	0b64fe1beh,0b64fe1beh
-	DD	017ad88f0h,017ad88f0h
-	DD	066ac20c9h,066ac20c9h
-	DD	0b43ace7dh,0b43ace7dh
-	DD	0184adf63h,0184adf63h
-	DD	082311ae5h,082311ae5h
-	DD	060335197h,060335197h
-	DD	0457f5362h,0457f5362h
-	DD	0e07764b1h,0e07764b1h
-	DD	084ae6bbbh,084ae6bbbh
-	DD	01ca081feh,01ca081feh
-	DD	0942b08f9h,0942b08f9h
-	DD	058684870h,058684870h
-	DD	019fd458fh,019fd458fh
-	DD	0876cde94h,0876cde94h
-	DD	0b7f87b52h,0b7f87b52h
-	DD	023d373abh,023d373abh
-	DD	0e2024b72h,0e2024b72h
-	DD	0578f1fe3h,0578f1fe3h
-	DD	02aab5566h,02aab5566h
-	DD	00728ebb2h,00728ebb2h
-	DD	003c2b52fh,003c2b52fh
-	DD	09a7bc586h,09a7bc586h
-	DD	0a50837d3h,0a50837d3h
-	DD	0f2872830h,0f2872830h
-	DD	0b2a5bf23h,0b2a5bf23h
-	DD	0ba6a0302h,0ba6a0302h
-	DD	05c8216edh,05c8216edh
-	DD	02b1ccf8ah,02b1ccf8ah
-	DD	092b479a7h,092b479a7h
-	DD	0f0f207f3h,0f0f207f3h
-	DD	0a1e2694eh,0a1e2694eh
-	DD	0cdf4da65h,0cdf4da65h
-	DD	0d5be0506h,0d5be0506h
-	DD	01f6234d1h,01f6234d1h
-	DD	08afea6c4h,08afea6c4h
-	DD	09d532e34h,09d532e34h
-	DD	0a055f3a2h,0a055f3a2h
-	DD	032e18a05h,032e18a05h
-	DD	075ebf6a4h,075ebf6a4h
-	DD	039ec830bh,039ec830bh
-	DD	0aaef6040h,0aaef6040h
-	DD	0069f715eh,0069f715eh
-	DD	051106ebdh,051106ebdh
-	DD	0f98a213eh,0f98a213eh
-	DD	03d06dd96h,03d06dd96h
-	DD	0ae053eddh,0ae053eddh
-	DD	046bde64dh,046bde64dh
-	DD	0b58d5491h,0b58d5491h
-	DD	0055dc471h,0055dc471h
-	DD	06fd40604h,06fd40604h
-	DD	0ff155060h,0ff155060h
-	DD	024fb9819h,024fb9819h
-	DD	097e9bdd6h,097e9bdd6h
-	DD	0cc434089h,0cc434089h
-	DD	0779ed967h,0779ed967h
-	DD	0bd42e8b0h,0bd42e8b0h
-	DD	0888b8907h,0888b8907h
-	DD	0385b19e7h,0385b19e7h
-	DD	0dbeec879h,0dbeec879h
-	DD	0470a7ca1h,0470a7ca1h
-	DD	0e90f427ch,0e90f427ch
-	DD	0c91e84f8h,0c91e84f8h
-	DD	000000000h,000000000h
-	DD	083868009h,083868009h
-	DD	048ed2b32h,048ed2b32h
-	DD	0ac70111eh,0ac70111eh
-	DD	04e725a6ch,04e725a6ch
-	DD	0fbff0efdh,0fbff0efdh
-	DD	05638850fh,05638850fh
-	DD	01ed5ae3dh,01ed5ae3dh
-	DD	027392d36h,027392d36h
-	DD	064d90f0ah,064d90f0ah
-	DD	021a65c68h,021a65c68h
-	DD	0d1545b9bh,0d1545b9bh
-	DD	03a2e3624h,03a2e3624h
-	DD	0b1670a0ch,0b1670a0ch
-	DD	00fe75793h,00fe75793h
-	DD	0d296eeb4h,0d296eeb4h
-	DD	09e919b1bh,09e919b1bh
-	DD	04fc5c080h,04fc5c080h
-	DD	0a220dc61h,0a220dc61h
-	DD	0694b775ah,0694b775ah
-	DD	0161a121ch,0161a121ch
-	DD	00aba93e2h,00aba93e2h
-	DD	0e52aa0c0h,0e52aa0c0h
-	DD	043e0223ch,043e0223ch
-	DD	01d171b12h,01d171b12h
-	DD	00b0d090eh,00b0d090eh
-	DD	0adc78bf2h,0adc78bf2h
-	DD	0b9a8b62dh,0b9a8b62dh
-	DD	0c8a91e14h,0c8a91e14h
-	DD	08519f157h,08519f157h
-	DD	04c0775afh,04c0775afh
-	DD	0bbdd99eeh,0bbdd99eeh
-	DD	0fd607fa3h,0fd607fa3h
-	DD	09f2601f7h,09f2601f7h
-	DD	0bcf5725ch,0bcf5725ch
-	DD	0c53b6644h,0c53b6644h
-	DD	0347efb5bh,0347efb5bh
-	DD	07629438bh,07629438bh
-	DD	0dcc623cbh,0dcc623cbh
-	DD	068fcedb6h,068fcedb6h
-	DD	063f1e4b8h,063f1e4b8h
-	DD	0cadc31d7h,0cadc31d7h
-	DD	010856342h,010856342h
-	DD	040229713h,040229713h
-	DD	02011c684h,02011c684h
-	DD	07d244a85h,07d244a85h
-	DD	0f83dbbd2h,0f83dbbd2h
-	DD	01132f9aeh,01132f9aeh
-	DD	06da129c7h,06da129c7h
-	DD	04b2f9e1dh,04b2f9e1dh
-	DD	0f330b2dch,0f330b2dch
-	DD	0ec52860dh,0ec52860dh
-	DD	0d0e3c177h,0d0e3c177h
-	DD	06c16b32bh,06c16b32bh
-	DD	099b970a9h,099b970a9h
-	DD	0fa489411h,0fa489411h
-	DD	02264e947h,02264e947h
-	DD	0c48cfca8h,0c48cfca8h
-	DD	01a3ff0a0h,01a3ff0a0h
-	DD	0d82c7d56h,0d82c7d56h
-	DD	0ef903322h,0ef903322h
-	DD	0c74e4987h,0c74e4987h
-	DD	0c1d138d9h,0c1d138d9h
-	DD	0fea2ca8ch,0fea2ca8ch
-	DD	0360bd498h,0360bd498h
-	DD	0cf81f5a6h,0cf81f5a6h
-	DD	028de7aa5h,028de7aa5h
-	DD	0268eb7dah,0268eb7dah
-	DD	0a4bfad3fh,0a4bfad3fh
-	DD	0e49d3a2ch,0e49d3a2ch
-	DD	00d927850h,00d927850h
-	DD	09bcc5f6ah,09bcc5f6ah
-	DD	062467e54h,062467e54h
-	DD	0c2138df6h,0c2138df6h
-	DD	0e8b8d890h,0e8b8d890h
-	DD	05ef7392eh,05ef7392eh
-	DD	0f5afc382h,0f5afc382h
-	DD	0be805d9fh,0be805d9fh
-	DD	07c93d069h,07c93d069h
-	DD	0a92dd56fh,0a92dd56fh
-	DD	0b31225cfh,0b31225cfh
-	DD	03b99acc8h,03b99acc8h
-	DD	0a77d1810h,0a77d1810h
-	DD	06e639ce8h,06e639ce8h
-	DD	07bbb3bdbh,07bbb3bdbh
-	DD	0097826cdh,0097826cdh
-	DD	0f418596eh,0f418596eh
-	DD	001b79aech,001b79aech
-	DD	0a89a4f83h,0a89a4f83h
-	DD	0656e95e6h,0656e95e6h
-	DD	07ee6ffaah,07ee6ffaah
-	DD	008cfbc21h,008cfbc21h
-	DD	0e6e815efh,0e6e815efh
-	DD	0d99be7bah,0d99be7bah
-	DD	0ce366f4ah,0ce366f4ah
-	DD	0d4099feah,0d4099feah
-	DD	0d67cb029h,0d67cb029h
-	DD	0afb2a431h,0afb2a431h
-	DD	031233f2ah,031233f2ah
-	DD	03094a5c6h,03094a5c6h
-	DD	0c066a235h,0c066a235h
-	DD	037bc4e74h,037bc4e74h
-	DD	0a6ca82fch,0a6ca82fch
-	DD	0b0d090e0h,0b0d090e0h
-	DD	015d8a733h,015d8a733h
-	DD	04a9804f1h,04a9804f1h
-	DD	0f7daec41h,0f7daec41h
-	DD	00e50cd7fh,00e50cd7fh
-	DD	02ff69117h,02ff69117h
-	DD	08dd64d76h,08dd64d76h
-	DD	04db0ef43h,04db0ef43h
-	DD	0544daacch,0544daacch
-	DD	0df0496e4h,0df0496e4h
-	DD	0e3b5d19eh,0e3b5d19eh
-	DD	01b886a4ch,01b886a4ch
-	DD	0b81f2cc1h,0b81f2cc1h
-	DD	07f516546h,07f516546h
-	DD	004ea5e9dh,004ea5e9dh
-	DD	05d358c01h,05d358c01h
-	DD	0737487fah,0737487fah
-	DD	02e410bfbh,02e410bfbh
-	DD	05a1d67b3h,05a1d67b3h
-	DD	052d2db92h,052d2db92h
-	DD	0335610e9h,0335610e9h
-	DD	01347d66dh,01347d66dh
-	DD	08c61d79ah,08c61d79ah
-	DD	07a0ca137h,07a0ca137h
-	DD	08e14f859h,08e14f859h
-	DD	0893c13ebh,0893c13ebh
-	DD	0ee27a9ceh,0ee27a9ceh
-	DD	035c961b7h,035c961b7h
-	DD	0ede51ce1h,0ede51ce1h
-	DD	03cb1477ah,03cb1477ah
-	DD	059dfd29ch,059dfd29ch
-	DD	03f73f255h,03f73f255h
-	DD	079ce1418h,079ce1418h
-	DD	0bf37c773h,0bf37c773h
-	DD	0eacdf753h,0eacdf753h
-	DD	05baafd5fh,05baafd5fh
-	DD	0146f3ddfh,0146f3ddfh
-	DD	086db4478h,086db4478h
-	DD	081f3afcah,081f3afcah
-	DD	03ec468b9h,03ec468b9h
-	DD	02c342438h,02c342438h
-	DD	05f40a3c2h,05f40a3c2h
-	DD	072c31d16h,072c31d16h
-	DD	00c25e2bch,00c25e2bch
-	DD	08b493c28h,08b493c28h
-	DD	041950dffh,041950dffh
-	DD	07101a839h,07101a839h
-	DD	0deb30c08h,0deb30c08h
-	DD	09ce4b4d8h,09ce4b4d8h
-	DD	090c15664h,090c15664h
-	DD	06184cb7bh,06184cb7bh
-	DD	070b632d5h,070b632d5h
-	DD	0745c6c48h,0745c6c48h
-	DD	04257b8d0h,04257b8d0h
-DB	052h,009h,06ah,0d5h,030h,036h,0a5h,038h
-DB	0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh
-DB	07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h
-DB	034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh
-DB	054h,07bh,094h,032h,0a6h,0c2h,023h,03dh
-DB	0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh
-DB	008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h
-DB	076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h
-DB	072h,0f8h,0f6h,064h,086h,068h,098h,016h
-DB	0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h
-DB	06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah
-DB	05eh,015h,046h,057h,0a7h,08dh,09dh,084h
-DB	090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah
-DB	0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h
-DB	0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h
-DB	0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh
-DB	03ah,091h,011h,041h,04fh,067h,0dch,0eah
-DB	097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h
-DB	096h,0ach,074h,022h,0e7h,0adh,035h,085h
-DB	0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh
-DB	047h,0f1h,01ah,071h,01dh,029h,0c5h,089h
-DB	06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh
-DB	0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h
-DB	09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h
-DB	01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h
-DB	0b1h,012h,010h,059h,027h,080h,0ech,05fh
-DB	060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh
-DB	02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh
-DB	0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h
-DB	0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h
-DB	017h,02bh,004h,07eh,0bah,077h,0d6h,026h
-DB	0e1h,069h,014h,063h,055h,021h,00ch,07dh
-	DD	080808080h,080808080h,0fefefefeh,0fefefefeh
-	DD	01b1b1b1bh,01b1b1b1bh,0,0
-DB	052h,009h,06ah,0d5h,030h,036h,0a5h,038h
-DB	0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh
-DB	07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h
-DB	034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh
-DB	054h,07bh,094h,032h,0a6h,0c2h,023h,03dh
-DB	0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh
-DB	008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h
-DB	076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h
-DB	072h,0f8h,0f6h,064h,086h,068h,098h,016h
-DB	0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h
-DB	06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah
-DB	05eh,015h,046h,057h,0a7h,08dh,09dh,084h
-DB	090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah
-DB	0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h
-DB	0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h
-DB	0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh
-DB	03ah,091h,011h,041h,04fh,067h,0dch,0eah
-DB	097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h
-DB	096h,0ach,074h,022h,0e7h,0adh,035h,085h
-DB	0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh
-DB	047h,0f1h,01ah,071h,01dh,029h,0c5h,089h
-DB	06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh
-DB	0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h
-DB	09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h
-DB	01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h
-DB	0b1h,012h,010h,059h,027h,080h,0ech,05fh
-DB	060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh
-DB	02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh
-DB	0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h
-DB	0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h
-DB	017h,02bh,004h,07eh,0bah,077h,0d6h,026h
-DB	0e1h,069h,014h,063h,055h,021h,00ch,07dh
-	DD	080808080h,080808080h,0fefefefeh,0fefefefeh
-	DD	01b1b1b1bh,01b1b1b1bh,0,0
-DB	052h,009h,06ah,0d5h,030h,036h,0a5h,038h
-DB	0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh
-DB	07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h
-DB	034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh
-DB	054h,07bh,094h,032h,0a6h,0c2h,023h,03dh
-DB	0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh
-DB	008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h
-DB	076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h
-DB	072h,0f8h,0f6h,064h,086h,068h,098h,016h
-DB	0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h
-DB	06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah
-DB	05eh,015h,046h,057h,0a7h,08dh,09dh,084h
-DB	090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah
-DB	0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h
-DB	0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h
-DB	0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh
-DB	03ah,091h,011h,041h,04fh,067h,0dch,0eah
-DB	097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h
-DB	096h,0ach,074h,022h,0e7h,0adh,035h,085h
-DB	0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh
-DB	047h,0f1h,01ah,071h,01dh,029h,0c5h,089h
-DB	06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh
-DB	0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h
-DB	09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h
-DB	01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h
-DB	0b1h,012h,010h,059h,027h,080h,0ech,05fh
-DB	060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh
-DB	02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh
-DB	0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h
-DB	0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h
-DB	017h,02bh,004h,07eh,0bah,077h,0d6h,026h
-DB	0e1h,069h,014h,063h,055h,021h,00ch,07dh
-	DD	080808080h,080808080h,0fefefefeh,0fefefefeh
-	DD	01b1b1b1bh,01b1b1b1bh,0,0
-DB	052h,009h,06ah,0d5h,030h,036h,0a5h,038h
-DB	0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh
-DB	07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h
-DB	034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh
-DB	054h,07bh,094h,032h,0a6h,0c2h,023h,03dh
-DB	0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh
-DB	008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h
-DB	076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h
-DB	072h,0f8h,0f6h,064h,086h,068h,098h,016h
-DB	0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h
-DB	06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah
-DB	05eh,015h,046h,057h,0a7h,08dh,09dh,084h
-DB	090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah
-DB	0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h
-DB	0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h
-DB	0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh
-DB	03ah,091h,011h,041h,04fh,067h,0dch,0eah
-DB	097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h
-DB	096h,0ach,074h,022h,0e7h,0adh,035h,085h
-DB	0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh
-DB	047h,0f1h,01ah,071h,01dh,029h,0c5h,089h
-DB	06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh
-DB	0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h
-DB	09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h
-DB	01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h
-DB	0b1h,012h,010h,059h,027h,080h,0ech,05fh
-DB	060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh
-DB	02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh
-DB	0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h
-DB	0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h
-DB	017h,02bh,004h,07eh,0bah,077h,0d6h,026h
-DB	0e1h,069h,014h,063h,055h,021h,00ch,07dh
-	DD	080808080h,080808080h,0fefefefeh,0fefefefeh
-	DD	01b1b1b1bh,01b1b1b1bh,0,0
+$L$AES_Td:
+	DD	0x50a7f451,0x50a7f451
+	DD	0x5365417e,0x5365417e
+	DD	0xc3a4171a,0xc3a4171a
+	DD	0x965e273a,0x965e273a
+	DD	0xcb6bab3b,0xcb6bab3b
+	DD	0xf1459d1f,0xf1459d1f
+	DD	0xab58faac,0xab58faac
+	DD	0x9303e34b,0x9303e34b
+	DD	0x55fa3020,0x55fa3020
+	DD	0xf66d76ad,0xf66d76ad
+	DD	0x9176cc88,0x9176cc88
+	DD	0x254c02f5,0x254c02f5
+	DD	0xfcd7e54f,0xfcd7e54f
+	DD	0xd7cb2ac5,0xd7cb2ac5
+	DD	0x80443526,0x80443526
+	DD	0x8fa362b5,0x8fa362b5
+	DD	0x495ab1de,0x495ab1de
+	DD	0x671bba25,0x671bba25
+	DD	0x980eea45,0x980eea45
+	DD	0xe1c0fe5d,0xe1c0fe5d
+	DD	0x02752fc3,0x02752fc3
+	DD	0x12f04c81,0x12f04c81
+	DD	0xa397468d,0xa397468d
+	DD	0xc6f9d36b,0xc6f9d36b
+	DD	0xe75f8f03,0xe75f8f03
+	DD	0x959c9215,0x959c9215
+	DD	0xeb7a6dbf,0xeb7a6dbf
+	DD	0xda595295,0xda595295
+	DD	0x2d83bed4,0x2d83bed4
+	DD	0xd3217458,0xd3217458
+	DD	0x2969e049,0x2969e049
+	DD	0x44c8c98e,0x44c8c98e
+	DD	0x6a89c275,0x6a89c275
+	DD	0x78798ef4,0x78798ef4
+	DD	0x6b3e5899,0x6b3e5899
+	DD	0xdd71b927,0xdd71b927
+	DD	0xb64fe1be,0xb64fe1be
+	DD	0x17ad88f0,0x17ad88f0
+	DD	0x66ac20c9,0x66ac20c9
+	DD	0xb43ace7d,0xb43ace7d
+	DD	0x184adf63,0x184adf63
+	DD	0x82311ae5,0x82311ae5
+	DD	0x60335197,0x60335197
+	DD	0x457f5362,0x457f5362
+	DD	0xe07764b1,0xe07764b1
+	DD	0x84ae6bbb,0x84ae6bbb
+	DD	0x1ca081fe,0x1ca081fe
+	DD	0x942b08f9,0x942b08f9
+	DD	0x58684870,0x58684870
+	DD	0x19fd458f,0x19fd458f
+	DD	0x876cde94,0x876cde94
+	DD	0xb7f87b52,0xb7f87b52
+	DD	0x23d373ab,0x23d373ab
+	DD	0xe2024b72,0xe2024b72
+	DD	0x578f1fe3,0x578f1fe3
+	DD	0x2aab5566,0x2aab5566
+	DD	0x0728ebb2,0x0728ebb2
+	DD	0x03c2b52f,0x03c2b52f
+	DD	0x9a7bc586,0x9a7bc586
+	DD	0xa50837d3,0xa50837d3
+	DD	0xf2872830,0xf2872830
+	DD	0xb2a5bf23,0xb2a5bf23
+	DD	0xba6a0302,0xba6a0302
+	DD	0x5c8216ed,0x5c8216ed
+	DD	0x2b1ccf8a,0x2b1ccf8a
+	DD	0x92b479a7,0x92b479a7
+	DD	0xf0f207f3,0xf0f207f3
+	DD	0xa1e2694e,0xa1e2694e
+	DD	0xcdf4da65,0xcdf4da65
+	DD	0xd5be0506,0xd5be0506
+	DD	0x1f6234d1,0x1f6234d1
+	DD	0x8afea6c4,0x8afea6c4
+	DD	0x9d532e34,0x9d532e34
+	DD	0xa055f3a2,0xa055f3a2
+	DD	0x32e18a05,0x32e18a05
+	DD	0x75ebf6a4,0x75ebf6a4
+	DD	0x39ec830b,0x39ec830b
+	DD	0xaaef6040,0xaaef6040
+	DD	0x069f715e,0x069f715e
+	DD	0x51106ebd,0x51106ebd
+	DD	0xf98a213e,0xf98a213e
+	DD	0x3d06dd96,0x3d06dd96
+	DD	0xae053edd,0xae053edd
+	DD	0x46bde64d,0x46bde64d
+	DD	0xb58d5491,0xb58d5491
+	DD	0x055dc471,0x055dc471
+	DD	0x6fd40604,0x6fd40604
+	DD	0xff155060,0xff155060
+	DD	0x24fb9819,0x24fb9819
+	DD	0x97e9bdd6,0x97e9bdd6
+	DD	0xcc434089,0xcc434089
+	DD	0x779ed967,0x779ed967
+	DD	0xbd42e8b0,0xbd42e8b0
+	DD	0x888b8907,0x888b8907
+	DD	0x385b19e7,0x385b19e7
+	DD	0xdbeec879,0xdbeec879
+	DD	0x470a7ca1,0x470a7ca1
+	DD	0xe90f427c,0xe90f427c
+	DD	0xc91e84f8,0xc91e84f8
+	DD	0x00000000,0x00000000
+	DD	0x83868009,0x83868009
+	DD	0x48ed2b32,0x48ed2b32
+	DD	0xac70111e,0xac70111e
+	DD	0x4e725a6c,0x4e725a6c
+	DD	0xfbff0efd,0xfbff0efd
+	DD	0x5638850f,0x5638850f
+	DD	0x1ed5ae3d,0x1ed5ae3d
+	DD	0x27392d36,0x27392d36
+	DD	0x64d90f0a,0x64d90f0a
+	DD	0x21a65c68,0x21a65c68
+	DD	0xd1545b9b,0xd1545b9b
+	DD	0x3a2e3624,0x3a2e3624
+	DD	0xb1670a0c,0xb1670a0c
+	DD	0x0fe75793,0x0fe75793
+	DD	0xd296eeb4,0xd296eeb4
+	DD	0x9e919b1b,0x9e919b1b
+	DD	0x4fc5c080,0x4fc5c080
+	DD	0xa220dc61,0xa220dc61
+	DD	0x694b775a,0x694b775a
+	DD	0x161a121c,0x161a121c
+	DD	0x0aba93e2,0x0aba93e2
+	DD	0xe52aa0c0,0xe52aa0c0
+	DD	0x43e0223c,0x43e0223c
+	DD	0x1d171b12,0x1d171b12
+	DD	0x0b0d090e,0x0b0d090e
+	DD	0xadc78bf2,0xadc78bf2
+	DD	0xb9a8b62d,0xb9a8b62d
+	DD	0xc8a91e14,0xc8a91e14
+	DD	0x8519f157,0x8519f157
+	DD	0x4c0775af,0x4c0775af
+	DD	0xbbdd99ee,0xbbdd99ee
+	DD	0xfd607fa3,0xfd607fa3
+	DD	0x9f2601f7,0x9f2601f7
+	DD	0xbcf5725c,0xbcf5725c
+	DD	0xc53b6644,0xc53b6644
+	DD	0x347efb5b,0x347efb5b
+	DD	0x7629438b,0x7629438b
+	DD	0xdcc623cb,0xdcc623cb
+	DD	0x68fcedb6,0x68fcedb6
+	DD	0x63f1e4b8,0x63f1e4b8
+	DD	0xcadc31d7,0xcadc31d7
+	DD	0x10856342,0x10856342
+	DD	0x40229713,0x40229713
+	DD	0x2011c684,0x2011c684
+	DD	0x7d244a85,0x7d244a85
+	DD	0xf83dbbd2,0xf83dbbd2
+	DD	0x1132f9ae,0x1132f9ae
+	DD	0x6da129c7,0x6da129c7
+	DD	0x4b2f9e1d,0x4b2f9e1d
+	DD	0xf330b2dc,0xf330b2dc
+	DD	0xec52860d,0xec52860d
+	DD	0xd0e3c177,0xd0e3c177
+	DD	0x6c16b32b,0x6c16b32b
+	DD	0x99b970a9,0x99b970a9
+	DD	0xfa489411,0xfa489411
+	DD	0x2264e947,0x2264e947
+	DD	0xc48cfca8,0xc48cfca8
+	DD	0x1a3ff0a0,0x1a3ff0a0
+	DD	0xd82c7d56,0xd82c7d56
+	DD	0xef903322,0xef903322
+	DD	0xc74e4987,0xc74e4987
+	DD	0xc1d138d9,0xc1d138d9
+	DD	0xfea2ca8c,0xfea2ca8c
+	DD	0x360bd498,0x360bd498
+	DD	0xcf81f5a6,0xcf81f5a6
+	DD	0x28de7aa5,0x28de7aa5
+	DD	0x268eb7da,0x268eb7da
+	DD	0xa4bfad3f,0xa4bfad3f
+	DD	0xe49d3a2c,0xe49d3a2c
+	DD	0x0d927850,0x0d927850
+	DD	0x9bcc5f6a,0x9bcc5f6a
+	DD	0x62467e54,0x62467e54
+	DD	0xc2138df6,0xc2138df6
+	DD	0xe8b8d890,0xe8b8d890
+	DD	0x5ef7392e,0x5ef7392e
+	DD	0xf5afc382,0xf5afc382
+	DD	0xbe805d9f,0xbe805d9f
+	DD	0x7c93d069,0x7c93d069
+	DD	0xa92dd56f,0xa92dd56f
+	DD	0xb31225cf,0xb31225cf
+	DD	0x3b99acc8,0x3b99acc8
+	DD	0xa77d1810,0xa77d1810
+	DD	0x6e639ce8,0x6e639ce8
+	DD	0x7bbb3bdb,0x7bbb3bdb
+	DD	0x097826cd,0x097826cd
+	DD	0xf418596e,0xf418596e
+	DD	0x01b79aec,0x01b79aec
+	DD	0xa89a4f83,0xa89a4f83
+	DD	0x656e95e6,0x656e95e6
+	DD	0x7ee6ffaa,0x7ee6ffaa
+	DD	0x08cfbc21,0x08cfbc21
+	DD	0xe6e815ef,0xe6e815ef
+	DD	0xd99be7ba,0xd99be7ba
+	DD	0xce366f4a,0xce366f4a
+	DD	0xd4099fea,0xd4099fea
+	DD	0xd67cb029,0xd67cb029
+	DD	0xafb2a431,0xafb2a431
+	DD	0x31233f2a,0x31233f2a
+	DD	0x3094a5c6,0x3094a5c6
+	DD	0xc066a235,0xc066a235
+	DD	0x37bc4e74,0x37bc4e74
+	DD	0xa6ca82fc,0xa6ca82fc
+	DD	0xb0d090e0,0xb0d090e0
+	DD	0x15d8a733,0x15d8a733
+	DD	0x4a9804f1,0x4a9804f1
+	DD	0xf7daec41,0xf7daec41
+	DD	0x0e50cd7f,0x0e50cd7f
+	DD	0x2ff69117,0x2ff69117
+	DD	0x8dd64d76,0x8dd64d76
+	DD	0x4db0ef43,0x4db0ef43
+	DD	0x544daacc,0x544daacc
+	DD	0xdf0496e4,0xdf0496e4
+	DD	0xe3b5d19e,0xe3b5d19e
+	DD	0x1b886a4c,0x1b886a4c
+	DD	0xb81f2cc1,0xb81f2cc1
+	DD	0x7f516546,0x7f516546
+	DD	0x04ea5e9d,0x04ea5e9d
+	DD	0x5d358c01,0x5d358c01
+	DD	0x737487fa,0x737487fa
+	DD	0x2e410bfb,0x2e410bfb
+	DD	0x5a1d67b3,0x5a1d67b3
+	DD	0x52d2db92,0x52d2db92
+	DD	0x335610e9,0x335610e9
+	DD	0x1347d66d,0x1347d66d
+	DD	0x8c61d79a,0x8c61d79a
+	DD	0x7a0ca137,0x7a0ca137
+	DD	0x8e14f859,0x8e14f859
+	DD	0x893c13eb,0x893c13eb
+	DD	0xee27a9ce,0xee27a9ce
+	DD	0x35c961b7,0x35c961b7
+	DD	0xede51ce1,0xede51ce1
+	DD	0x3cb1477a,0x3cb1477a
+	DD	0x59dfd29c,0x59dfd29c
+	DD	0x3f73f255,0x3f73f255
+	DD	0x79ce1418,0x79ce1418
+	DD	0xbf37c773,0xbf37c773
+	DD	0xeacdf753,0xeacdf753
+	DD	0x5baafd5f,0x5baafd5f
+	DD	0x146f3ddf,0x146f3ddf
+	DD	0x86db4478,0x86db4478
+	DD	0x81f3afca,0x81f3afca
+	DD	0x3ec468b9,0x3ec468b9
+	DD	0x2c342438,0x2c342438
+	DD	0x5f40a3c2,0x5f40a3c2
+	DD	0x72c31d16,0x72c31d16
+	DD	0x0c25e2bc,0x0c25e2bc
+	DD	0x8b493c28,0x8b493c28
+	DD	0x41950dff,0x41950dff
+	DD	0x7101a839,0x7101a839
+	DD	0xdeb30c08,0xdeb30c08
+	DD	0x9ce4b4d8,0x9ce4b4d8
+	DD	0x90c15664,0x90c15664
+	DD	0x6184cb7b,0x6184cb7b
+	DD	0x70b632d5,0x70b632d5
+	DD	0x745c6c48,0x745c6c48
+	DD	0x4257b8d0,0x4257b8d0
+DB	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
+DB	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
+DB	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
+DB	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
+DB	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
+DB	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
+DB	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
+DB	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
+DB	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
+DB	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
+DB	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
+DB	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
+DB	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
+DB	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
+DB	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
+DB	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
+DB	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
+DB	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
+DB	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
+DB	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
+DB	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
+DB	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
+DB	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
+DB	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
+DB	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
+DB	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
+DB	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
+DB	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
+DB	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
+DB	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
+DB	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
+DB	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
+	DD	0x80808080,0x80808080,0xfefefefe,0xfefefefe
+	DD	0x1b1b1b1b,0x1b1b1b1b,0,0
+DB	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
+DB	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
+DB	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
+DB	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
+DB	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
+DB	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
+DB	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
+DB	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
+DB	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
+DB	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
+DB	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
+DB	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
+DB	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
+DB	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
+DB	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
+DB	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
+DB	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
+DB	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
+DB	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
+DB	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
+DB	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
+DB	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
+DB	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
+DB	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
+DB	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
+DB	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
+DB	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
+DB	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
+DB	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
+DB	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
+DB	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
+DB	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
+	DD	0x80808080,0x80808080,0xfefefefe,0xfefefefe
+	DD	0x1b1b1b1b,0x1b1b1b1b,0,0
+DB	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
+DB	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
+DB	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
+DB	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
+DB	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
+DB	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
+DB	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
+DB	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
+DB	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
+DB	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
+DB	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
+DB	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
+DB	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
+DB	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
+DB	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
+DB	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
+DB	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
+DB	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
+DB	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
+DB	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
+DB	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
+DB	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
+DB	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
+DB	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
+DB	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
+DB	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
+DB	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
+DB	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
+DB	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
+DB	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
+DB	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
+DB	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
+	DD	0x80808080,0x80808080,0xfefefefe,0xfefefefe
+	DD	0x1b1b1b1b,0x1b1b1b1b,0,0
+DB	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
+DB	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
+DB	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
+DB	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
+DB	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
+DB	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
+DB	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
+DB	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
+DB	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
+DB	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
+DB	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
+DB	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
+DB	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
+DB	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
+DB	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
+DB	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
+DB	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
+DB	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
+DB	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
+DB	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
+DB	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
+DB	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
+DB	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
+DB	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
+DB	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
+DB	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
+DB	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
+DB	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
+DB	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
+DB	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
+DB	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
+DB	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
+	DD	0x80808080,0x80808080,0xfefefefe,0xfefefefe
+	DD	0x1b1b1b1b,0x1b1b1b1b,0,0
 DB	65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32
 DB	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
 DB	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
 DB	62,0
 ALIGN	64
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-block_se_handler	PROC PRIVATE
+block_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2608,53 +2607,53 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_block_prologue
+	jb	NEAR $L$in_block_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_block_prologue
+	jae	NEAR $L$in_block_prologue
 
-	mov	rax,QWORD PTR[24+rax]
-	lea	rax,QWORD PTR[48+rax]
+	mov	rax,QWORD[24+rax]
+	lea	rax,[48+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_block_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_block_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	jmp	$L$common_seh_exit
-block_se_handler	ENDP
+	jmp	NEAR $L$common_seh_exit
+
 
 
 ALIGN	16
-key_se_handler	PROC PRIVATE
+key_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2666,52 +2665,52 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_key_prologue
+	jb	NEAR $L$in_key_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_key_prologue
+	jae	NEAR $L$in_key_prologue
 
-	lea	rax,QWORD PTR[56+rax]
+	lea	rax,[56+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_key_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_key_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	jmp	$L$common_seh_exit
-key_se_handler	ENDP
+	jmp	NEAR $L$common_seh_exit
+
 
 
 ALIGN	16
-cbc_se_handler	PROC PRIVATE
+cbc_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2723,82 +2722,82 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$cbc_prologue]
+	lea	r10,[$L$cbc_prologue]
 	cmp	rbx,r10
-	jb	$L$in_cbc_prologue
+	jb	NEAR $L$in_cbc_prologue
 
-	lea	r10,QWORD PTR[$L$cbc_fast_body]
+	lea	r10,[$L$cbc_fast_body]
 	cmp	rbx,r10
-	jb	$L$in_cbc_frame_setup
+	jb	NEAR $L$in_cbc_frame_setup
 
-	lea	r10,QWORD PTR[$L$cbc_slow_prologue]
+	lea	r10,[$L$cbc_slow_prologue]
 	cmp	rbx,r10
-	jb	$L$in_cbc_body
+	jb	NEAR $L$in_cbc_body
 
-	lea	r10,QWORD PTR[$L$cbc_slow_body]
+	lea	r10,[$L$cbc_slow_body]
 	cmp	rbx,r10
-	jb	$L$in_cbc_frame_setup
+	jb	NEAR $L$in_cbc_frame_setup
 
-$L$in_cbc_body::
-	mov	rax,QWORD PTR[152+r8]
+$L$in_cbc_body:
+	mov	rax,QWORD[152+r8]
 
-	lea	r10,QWORD PTR[$L$cbc_epilogue]
+	lea	r10,[$L$cbc_epilogue]
 	cmp	rbx,r10
-	jae	$L$in_cbc_prologue
+	jae	NEAR $L$in_cbc_prologue
 
-	lea	rax,QWORD PTR[8+rax]
+	lea	rax,[8+rax]
 
-	lea	r10,QWORD PTR[$L$cbc_popfq]
+	lea	r10,[$L$cbc_popfq]
 	cmp	rbx,r10
-	jae	$L$in_cbc_prologue
+	jae	NEAR $L$in_cbc_prologue
 
-	mov	rax,QWORD PTR[8+rax]
-	lea	rax,QWORD PTR[56+rax]
+	mov	rax,QWORD[8+rax]
+	lea	rax,[56+rax]
 
-$L$in_cbc_frame_setup::
-	mov	rbx,QWORD PTR[((-16))+rax]
-	mov	rbp,QWORD PTR[((-24))+rax]
-	mov	r12,QWORD PTR[((-32))+rax]
-	mov	r13,QWORD PTR[((-40))+rax]
-	mov	r14,QWORD PTR[((-48))+rax]
-	mov	r15,QWORD PTR[((-56))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+$L$in_cbc_frame_setup:
+	mov	rbx,QWORD[((-16))+rax]
+	mov	rbp,QWORD[((-24))+rax]
+	mov	r12,QWORD[((-32))+rax]
+	mov	r13,QWORD[((-40))+rax]
+	mov	r14,QWORD[((-48))+rax]
+	mov	r15,QWORD[((-56))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_cbc_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_cbc_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-$L$common_seh_exit::
+$L$common_seh_exit:
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -2812,53 +2811,48 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-cbc_se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_asm_AES_encrypt
-	DD	imagerel $L$SEH_end_asm_AES_encrypt
-	DD	imagerel $L$SEH_info_asm_AES_encrypt
+	DD	$L$SEH_begin_asm_AES_encrypt wrt ..imagebase
+	DD	$L$SEH_end_asm_AES_encrypt wrt ..imagebase
+	DD	$L$SEH_info_asm_AES_encrypt wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_asm_AES_decrypt
-	DD	imagerel $L$SEH_end_asm_AES_decrypt
-	DD	imagerel $L$SEH_info_asm_AES_decrypt
+	DD	$L$SEH_begin_asm_AES_decrypt wrt ..imagebase
+	DD	$L$SEH_end_asm_AES_decrypt wrt ..imagebase
+	DD	$L$SEH_info_asm_AES_decrypt wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_asm_AES_set_encrypt_key
-	DD	imagerel $L$SEH_end_asm_AES_set_encrypt_key
-	DD	imagerel $L$SEH_info_asm_AES_set_encrypt_key
+	DD	$L$SEH_begin_asm_AES_set_encrypt_key wrt ..imagebase
+	DD	$L$SEH_end_asm_AES_set_encrypt_key wrt ..imagebase
+	DD	$L$SEH_info_asm_AES_set_encrypt_key wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_asm_AES_set_decrypt_key
-	DD	imagerel $L$SEH_end_asm_AES_set_decrypt_key
-	DD	imagerel $L$SEH_info_asm_AES_set_decrypt_key
+	DD	$L$SEH_begin_asm_AES_set_decrypt_key wrt ..imagebase
+	DD	$L$SEH_end_asm_AES_set_decrypt_key wrt ..imagebase
+	DD	$L$SEH_info_asm_AES_set_decrypt_key wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_asm_AES_cbc_encrypt
-	DD	imagerel $L$SEH_end_asm_AES_cbc_encrypt
-	DD	imagerel $L$SEH_info_asm_AES_cbc_encrypt
+	DD	$L$SEH_begin_asm_AES_cbc_encrypt wrt ..imagebase
+	DD	$L$SEH_end_asm_AES_cbc_encrypt wrt ..imagebase
+	DD	$L$SEH_info_asm_AES_cbc_encrypt wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_asm_AES_encrypt::
+$L$SEH_info_asm_AES_encrypt:
 DB	9,0,0,0
-	DD	imagerel block_se_handler
-	DD	imagerel $L$enc_prologue,imagerel $L$enc_epilogue
-$L$SEH_info_asm_AES_decrypt::
+	DD	block_se_handler wrt ..imagebase
+	DD	$L$enc_prologue wrt ..imagebase,$L$enc_epilogue wrt ..imagebase
+$L$SEH_info_asm_AES_decrypt:
 DB	9,0,0,0
-	DD	imagerel block_se_handler
-	DD	imagerel $L$dec_prologue,imagerel $L$dec_epilogue
-$L$SEH_info_asm_AES_set_encrypt_key::
+	DD	block_se_handler wrt ..imagebase
+	DD	$L$dec_prologue wrt ..imagebase,$L$dec_epilogue wrt ..imagebase
+$L$SEH_info_asm_AES_set_encrypt_key:
 DB	9,0,0,0
-	DD	imagerel key_se_handler
-	DD	imagerel $L$enc_key_prologue,imagerel $L$enc_key_epilogue
-$L$SEH_info_asm_AES_set_decrypt_key::
+	DD	key_se_handler wrt ..imagebase
+	DD	$L$enc_key_prologue wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase
+$L$SEH_info_asm_AES_set_decrypt_key:
 DB	9,0,0,0
-	DD	imagerel key_se_handler
-	DD	imagerel $L$dec_key_prologue,imagerel $L$dec_key_epilogue
-$L$SEH_info_asm_AES_cbc_encrypt::
+	DD	key_se_handler wrt ..imagebase
+	DD	$L$dec_key_prologue wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase
+$L$SEH_info_asm_AES_cbc_encrypt:
 DB	9,0,0,0
-	DD	imagerel cbc_se_handler
-
-.xdata	ENDS
-END
+	DD	cbc_se_handler wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm
index 798784e..30e8a85 100644
--- a/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm
@@ -1,130 +1,134 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
-EXTERN	OPENSSL_ia32cap_P:NEAR
-PUBLIC	aesni_encrypt
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
+
+EXTERN	OPENSSL_ia32cap_P
+global	aesni_encrypt
 
 ALIGN	16
-aesni_encrypt	PROC PUBLIC
-	movups	xmm2,XMMWORD PTR[rcx]
-	mov	eax,DWORD PTR[240+r8]
-	movups	xmm0,XMMWORD PTR[r8]
-	movups	xmm1,XMMWORD PTR[16+r8]
-	lea	r8,QWORD PTR[32+r8]
+aesni_encrypt:
+	movups	xmm2,XMMWORD[rcx]
+	mov	eax,DWORD[240+r8]
+	movups	xmm0,XMMWORD[r8]
+	movups	xmm1,XMMWORD[16+r8]
+	lea	r8,[32+r8]
 	xorps	xmm2,xmm0
-$L$oop_enc1_1::
+$L$oop_enc1_1:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[r8]
-	lea	r8,QWORD PTR[16+r8]
-	jnz	$L$oop_enc1_1
+	movups	xmm1,XMMWORD[r8]
+	lea	r8,[16+r8]
+	jnz	NEAR $L$oop_enc1_1
 DB	102,15,56,221,209
-	movups	XMMWORD PTR[rdx],xmm2
+	movups	XMMWORD[rdx],xmm2
 	DB	0F3h,0C3h		;repret
-aesni_encrypt	ENDP
 
-PUBLIC	aesni_decrypt
+
+global	aesni_decrypt
 
 ALIGN	16
-aesni_decrypt	PROC PUBLIC
-	movups	xmm2,XMMWORD PTR[rcx]
-	mov	eax,DWORD PTR[240+r8]
-	movups	xmm0,XMMWORD PTR[r8]
-	movups	xmm1,XMMWORD PTR[16+r8]
-	lea	r8,QWORD PTR[32+r8]
+aesni_decrypt:
+	movups	xmm2,XMMWORD[rcx]
+	mov	eax,DWORD[240+r8]
+	movups	xmm0,XMMWORD[r8]
+	movups	xmm1,XMMWORD[16+r8]
+	lea	r8,[32+r8]
 	xorps	xmm2,xmm0
-$L$oop_dec1_2::
+$L$oop_dec1_2:
 DB	102,15,56,222,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[r8]
-	lea	r8,QWORD PTR[16+r8]
-	jnz	$L$oop_dec1_2
+	movups	xmm1,XMMWORD[r8]
+	lea	r8,[16+r8]
+	jnz	NEAR $L$oop_dec1_2
 DB	102,15,56,223,209
-	movups	XMMWORD PTR[rdx],xmm2
+	movups	XMMWORD[rdx],xmm2
 	DB	0F3h,0C3h		;repret
-aesni_decrypt	ENDP
+
 
 ALIGN	16
-_aesni_encrypt2	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_encrypt2:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
-	movups	xmm0,XMMWORD PTR[32+rcx]
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	movups	xmm0,XMMWORD[32+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 	add	rax,16
 
-$L$enc_loop2::
+$L$enc_loop2:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$enc_loop2
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$enc_loop2
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,221,208
 DB	102,15,56,221,216
 	DB	0F3h,0C3h		;repret
-_aesni_encrypt2	ENDP
+
 
 ALIGN	16
-_aesni_decrypt2	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_decrypt2:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
-	movups	xmm0,XMMWORD PTR[32+rcx]
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	movups	xmm0,XMMWORD[32+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 	add	rax,16
 
-$L$dec_loop2::
+$L$dec_loop2:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,222,208
 DB	102,15,56,222,216
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$dec_loop2
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$dec_loop2
 
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,223,208
 DB	102,15,56,223,216
 	DB	0F3h,0C3h		;repret
-_aesni_decrypt2	ENDP
+
 
 ALIGN	16
-_aesni_encrypt3	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_encrypt3:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
 	xorps	xmm4,xmm0
-	movups	xmm0,XMMWORD PTR[32+rcx]
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	movups	xmm0,XMMWORD[32+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 	add	rax,16
 
-$L$enc_loop3::
+$L$enc_loop3:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,220,225
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
 DB	102,15,56,220,224
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$enc_loop3
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$enc_loop3
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
@@ -133,32 +137,32 @@
 DB	102,15,56,221,216
 DB	102,15,56,221,224
 	DB	0F3h,0C3h		;repret
-_aesni_encrypt3	ENDP
+
 
 ALIGN	16
-_aesni_decrypt3	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_decrypt3:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
 	xorps	xmm4,xmm0
-	movups	xmm0,XMMWORD PTR[32+rcx]
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	movups	xmm0,XMMWORD[32+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 	add	rax,16
 
-$L$dec_loop3::
+$L$dec_loop3:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,222,208
 DB	102,15,56,222,216
 DB	102,15,56,222,224
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$dec_loop3
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$dec_loop3
 
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -167,36 +171,36 @@
 DB	102,15,56,223,216
 DB	102,15,56,223,224
 	DB	0F3h,0C3h		;repret
-_aesni_decrypt3	ENDP
+
 
 ALIGN	16
-_aesni_encrypt4	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_encrypt4:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
 	xorps	xmm4,xmm0
 	xorps	xmm5,xmm0
-	movups	xmm0,XMMWORD PTR[32+rcx]
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	movups	xmm0,XMMWORD[32+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
-DB	00fh,01fh,000h
+DB	0x0f,0x1f,0x00
 	add	rax,16
 
-$L$enc_loop4::
+$L$enc_loop4:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,220,225
 DB	102,15,56,220,233
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
 DB	102,15,56,220,224
 DB	102,15,56,220,232
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$enc_loop4
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$enc_loop4
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
@@ -207,36 +211,36 @@
 DB	102,15,56,221,224
 DB	102,15,56,221,232
 	DB	0F3h,0C3h		;repret
-_aesni_encrypt4	ENDP
+
 
 ALIGN	16
-_aesni_decrypt4	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_decrypt4:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
 	xorps	xmm4,xmm0
 	xorps	xmm5,xmm0
-	movups	xmm0,XMMWORD PTR[32+rcx]
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	movups	xmm0,XMMWORD[32+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
-DB	00fh,01fh,000h
+DB	0x0f,0x1f,0x00
 	add	rax,16
 
-$L$dec_loop4::
+$L$dec_loop4:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
 DB	102,15,56,222,233
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,222,208
 DB	102,15,56,222,216
 DB	102,15,56,222,224
 DB	102,15,56,222,232
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$dec_loop4
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$dec_loop4
 
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -247,18 +251,18 @@
 DB	102,15,56,223,224
 DB	102,15,56,223,232
 	DB	0F3h,0C3h		;repret
-_aesni_decrypt4	ENDP
+
 
 ALIGN	16
-_aesni_encrypt6	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_encrypt6:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	pxor	xmm3,xmm0
 	pxor	xmm4,xmm0
 DB	102,15,56,220,209
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 DB	102,15,56,220,217
 	pxor	xmm5,xmm0
@@ -269,18 +273,18 @@
 DB	102,15,56,220,233
 DB	102,15,56,220,241
 DB	102,15,56,220,249
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jmp	$L$enc_loop6_enter
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jmp	NEAR $L$enc_loop6_enter
 ALIGN	16
-$L$enc_loop6::
+$L$enc_loop6:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,220,225
 DB	102,15,56,220,233
 DB	102,15,56,220,241
 DB	102,15,56,220,249
-$L$enc_loop6_enter::
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+$L$enc_loop6_enter:
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
@@ -288,8 +292,8 @@
 DB	102,15,56,220,232
 DB	102,15,56,220,240
 DB	102,15,56,220,248
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$enc_loop6
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$enc_loop6
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
@@ -304,18 +308,18 @@
 DB	102,15,56,221,240
 DB	102,15,56,221,248
 	DB	0F3h,0C3h		;repret
-_aesni_encrypt6	ENDP
+
 
 ALIGN	16
-_aesni_decrypt6	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_decrypt6:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	pxor	xmm3,xmm0
 	pxor	xmm4,xmm0
 DB	102,15,56,222,209
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 DB	102,15,56,222,217
 	pxor	xmm5,xmm0
@@ -326,18 +330,18 @@
 DB	102,15,56,222,233
 DB	102,15,56,222,241
 DB	102,15,56,222,249
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jmp	$L$dec_loop6_enter
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jmp	NEAR $L$dec_loop6_enter
 ALIGN	16
-$L$dec_loop6::
+$L$dec_loop6:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
 DB	102,15,56,222,233
 DB	102,15,56,222,241
 DB	102,15,56,222,249
-$L$dec_loop6_enter::
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+$L$dec_loop6_enter:
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -345,8 +349,8 @@
 DB	102,15,56,222,232
 DB	102,15,56,222,240
 DB	102,15,56,222,248
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$dec_loop6
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$dec_loop6
 
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -361,19 +365,19 @@
 DB	102,15,56,223,240
 DB	102,15,56,223,248
 	DB	0F3h,0C3h		;repret
-_aesni_decrypt6	ENDP
+
 
 ALIGN	16
-_aesni_encrypt8	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_encrypt8:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
 	pxor	xmm4,xmm0
 	pxor	xmm5,xmm0
 	pxor	xmm6,xmm0
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 DB	102,15,56,220,209
 	add	rax,16
@@ -387,10 +391,10 @@
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jmp	$L$enc_loop8_enter
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jmp	NEAR $L$enc_loop8_enter
 ALIGN	16
-$L$enc_loop8::
+$L$enc_loop8:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,220,225
@@ -399,8 +403,8 @@
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-$L$enc_loop8_enter::
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+$L$enc_loop8_enter:
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
@@ -410,8 +414,8 @@
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$enc_loop8
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$enc_loop8
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
@@ -430,19 +434,19 @@
 DB	102,68,15,56,221,192
 DB	102,68,15,56,221,200
 	DB	0F3h,0C3h		;repret
-_aesni_encrypt8	ENDP
+
 
 ALIGN	16
-_aesni_decrypt8	PROC PRIVATE
-	movups	xmm0,XMMWORD PTR[rcx]
+_aesni_decrypt8:
+	movups	xmm0,XMMWORD[rcx]
 	shl	eax,4
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm0
 	pxor	xmm4,xmm0
 	pxor	xmm5,xmm0
 	pxor	xmm6,xmm0
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	neg	rax
 DB	102,15,56,222,209
 	add	rax,16
@@ -456,10 +460,10 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jmp	$L$dec_loop8_enter
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jmp	NEAR $L$dec_loop8_enter
 ALIGN	16
-$L$dec_loop8::
+$L$dec_loop8:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
@@ -468,8 +472,8 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-$L$dec_loop8_enter::
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+$L$dec_loop8_enter:
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -479,8 +483,8 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$dec_loop8
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$dec_loop8
 
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -499,378 +503,377 @@
 DB	102,68,15,56,223,192
 DB	102,68,15,56,223,200
 	DB	0F3h,0C3h		;repret
-_aesni_decrypt8	ENDP
-PUBLIC	aesni_ecb_encrypt
+
+global	aesni_ecb_encrypt
 
 ALIGN	16
-aesni_ecb_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_ecb_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_ecb_encrypt::
+$L$SEH_begin_aesni_ecb_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
+	mov	r8,QWORD[40+rsp]
 
 
 	and	rdx,-16
-	jz	$L$ecb_ret
+	jz	NEAR $L$ecb_ret
 
-	mov	eax,DWORD PTR[240+rcx]
-	movups	xmm0,XMMWORD PTR[rcx]
+	mov	eax,DWORD[240+rcx]
+	movups	xmm0,XMMWORD[rcx]
 	mov	r11,rcx
 	mov	r10d,eax
 	test	r8d,r8d
-	jz	$L$ecb_decrypt
+	jz	NEAR $L$ecb_decrypt
 
-	cmp	rdx,080h
-	jb	$L$ecb_enc_tail
+	cmp	rdx,0x80
+	jb	NEAR $L$ecb_enc_tail
 
-	movdqu	xmm2,XMMWORD PTR[rdi]
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
-	movdqu	xmm8,XMMWORD PTR[96+rdi]
-	movdqu	xmm9,XMMWORD PTR[112+rdi]
-	lea	rdi,QWORD PTR[128+rdi]
-	sub	rdx,080h
-	jmp	$L$ecb_enc_loop8_enter
+	movdqu	xmm2,XMMWORD[rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
+	movdqu	xmm7,XMMWORD[80+rdi]
+	movdqu	xmm8,XMMWORD[96+rdi]
+	movdqu	xmm9,XMMWORD[112+rdi]
+	lea	rdi,[128+rdi]
+	sub	rdx,0x80
+	jmp	NEAR $L$ecb_enc_loop8_enter
 ALIGN	16
-$L$ecb_enc_loop8::
-	movups	XMMWORD PTR[rsi],xmm2
+$L$ecb_enc_loop8:
+	movups	XMMWORD[rsi],xmm2
 	mov	rcx,r11
-	movdqu	xmm2,XMMWORD PTR[rdi]
+	movdqu	xmm2,XMMWORD[rdi]
 	mov	eax,r10d
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
-	movups	XMMWORD PTR[80+rsi],xmm7
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
-	movups	XMMWORD PTR[96+rsi],xmm8
-	movdqu	xmm8,XMMWORD PTR[96+rdi]
-	movups	XMMWORD PTR[112+rsi],xmm9
-	lea	rsi,QWORD PTR[128+rsi]
-	movdqu	xmm9,XMMWORD PTR[112+rdi]
-	lea	rdi,QWORD PTR[128+rdi]
-$L$ecb_enc_loop8_enter::
+	movups	XMMWORD[16+rsi],xmm3
+	movdqu	xmm3,XMMWORD[16+rdi]
+	movups	XMMWORD[32+rsi],xmm4
+	movdqu	xmm4,XMMWORD[32+rdi]
+	movups	XMMWORD[48+rsi],xmm5
+	movdqu	xmm5,XMMWORD[48+rdi]
+	movups	XMMWORD[64+rsi],xmm6
+	movdqu	xmm6,XMMWORD[64+rdi]
+	movups	XMMWORD[80+rsi],xmm7
+	movdqu	xmm7,XMMWORD[80+rdi]
+	movups	XMMWORD[96+rsi],xmm8
+	movdqu	xmm8,XMMWORD[96+rdi]
+	movups	XMMWORD[112+rsi],xmm9
+	lea	rsi,[128+rsi]
+	movdqu	xmm9,XMMWORD[112+rdi]
+	lea	rdi,[128+rdi]
+$L$ecb_enc_loop8_enter:
 
 	call	_aesni_encrypt8
 
-	sub	rdx,080h
-	jnc	$L$ecb_enc_loop8
+	sub	rdx,0x80
+	jnc	NEAR $L$ecb_enc_loop8
 
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	mov	rcx,r11
-	movups	XMMWORD PTR[16+rsi],xmm3
+	movups	XMMWORD[16+rsi],xmm3
 	mov	eax,r10d
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movups	XMMWORD PTR[80+rsi],xmm7
-	movups	XMMWORD PTR[96+rsi],xmm8
-	movups	XMMWORD PTR[112+rsi],xmm9
-	lea	rsi,QWORD PTR[128+rsi]
-	add	rdx,080h
-	jz	$L$ecb_ret
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	movups	XMMWORD[80+rsi],xmm7
+	movups	XMMWORD[96+rsi],xmm8
+	movups	XMMWORD[112+rsi],xmm9
+	lea	rsi,[128+rsi]
+	add	rdx,0x80
+	jz	NEAR $L$ecb_ret
 
-$L$ecb_enc_tail::
-	movups	xmm2,XMMWORD PTR[rdi]
-	cmp	rdx,020h
-	jb	$L$ecb_enc_one
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	je	$L$ecb_enc_two
-	movups	xmm4,XMMWORD PTR[32+rdi]
-	cmp	rdx,040h
-	jb	$L$ecb_enc_three
-	movups	xmm5,XMMWORD PTR[48+rdi]
-	je	$L$ecb_enc_four
-	movups	xmm6,XMMWORD PTR[64+rdi]
-	cmp	rdx,060h
-	jb	$L$ecb_enc_five
-	movups	xmm7,XMMWORD PTR[80+rdi]
-	je	$L$ecb_enc_six
-	movdqu	xmm8,XMMWORD PTR[96+rdi]
+$L$ecb_enc_tail:
+	movups	xmm2,XMMWORD[rdi]
+	cmp	rdx,0x20
+	jb	NEAR $L$ecb_enc_one
+	movups	xmm3,XMMWORD[16+rdi]
+	je	NEAR $L$ecb_enc_two
+	movups	xmm4,XMMWORD[32+rdi]
+	cmp	rdx,0x40
+	jb	NEAR $L$ecb_enc_three
+	movups	xmm5,XMMWORD[48+rdi]
+	je	NEAR $L$ecb_enc_four
+	movups	xmm6,XMMWORD[64+rdi]
+	cmp	rdx,0x60
+	jb	NEAR $L$ecb_enc_five
+	movups	xmm7,XMMWORD[80+rdi]
+	je	NEAR $L$ecb_enc_six
+	movdqu	xmm8,XMMWORD[96+rdi]
 	call	_aesni_encrypt8
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movups	XMMWORD PTR[80+rsi],xmm7
-	movups	XMMWORD PTR[96+rsi],xmm8
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	movups	XMMWORD[80+rsi],xmm7
+	movups	XMMWORD[96+rsi],xmm8
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_enc_one::
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+$L$ecb_enc_one:
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_enc1_3::
+$L$oop_enc1_3:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_enc1_3
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_enc1_3
 DB	102,15,56,221,209
-	movups	XMMWORD PTR[rsi],xmm2
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_enc_two::
+$L$ecb_enc_two:
 	call	_aesni_encrypt2
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_enc_three::
+$L$ecb_enc_three:
 	call	_aesni_encrypt3
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_enc_four::
+$L$ecb_enc_four:
 	call	_aesni_encrypt4
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_enc_five::
+$L$ecb_enc_five:
 	xorps	xmm7,xmm7
 	call	_aesni_encrypt6
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_enc_six::
+$L$ecb_enc_six:
 	call	_aesni_encrypt6
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movups	XMMWORD PTR[80+rsi],xmm7
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	movups	XMMWORD[80+rsi],xmm7
+	jmp	NEAR $L$ecb_ret
 
 ALIGN	16
-$L$ecb_decrypt::
-	cmp	rdx,080h
-	jb	$L$ecb_dec_tail
+$L$ecb_decrypt:
+	cmp	rdx,0x80
+	jb	NEAR $L$ecb_dec_tail
 
-	movdqu	xmm2,XMMWORD PTR[rdi]
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
-	movdqu	xmm8,XMMWORD PTR[96+rdi]
-	movdqu	xmm9,XMMWORD PTR[112+rdi]
-	lea	rdi,QWORD PTR[128+rdi]
-	sub	rdx,080h
-	jmp	$L$ecb_dec_loop8_enter
+	movdqu	xmm2,XMMWORD[rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
+	movdqu	xmm7,XMMWORD[80+rdi]
+	movdqu	xmm8,XMMWORD[96+rdi]
+	movdqu	xmm9,XMMWORD[112+rdi]
+	lea	rdi,[128+rdi]
+	sub	rdx,0x80
+	jmp	NEAR $L$ecb_dec_loop8_enter
 ALIGN	16
-$L$ecb_dec_loop8::
-	movups	XMMWORD PTR[rsi],xmm2
+$L$ecb_dec_loop8:
+	movups	XMMWORD[rsi],xmm2
 	mov	rcx,r11
-	movdqu	xmm2,XMMWORD PTR[rdi]
+	movdqu	xmm2,XMMWORD[rdi]
 	mov	eax,r10d
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
-	movups	XMMWORD PTR[80+rsi],xmm7
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
-	movups	XMMWORD PTR[96+rsi],xmm8
-	movdqu	xmm8,XMMWORD PTR[96+rdi]
-	movups	XMMWORD PTR[112+rsi],xmm9
-	lea	rsi,QWORD PTR[128+rsi]
-	movdqu	xmm9,XMMWORD PTR[112+rdi]
-	lea	rdi,QWORD PTR[128+rdi]
-$L$ecb_dec_loop8_enter::
+	movups	XMMWORD[16+rsi],xmm3
+	movdqu	xmm3,XMMWORD[16+rdi]
+	movups	XMMWORD[32+rsi],xmm4
+	movdqu	xmm4,XMMWORD[32+rdi]
+	movups	XMMWORD[48+rsi],xmm5
+	movdqu	xmm5,XMMWORD[48+rdi]
+	movups	XMMWORD[64+rsi],xmm6
+	movdqu	xmm6,XMMWORD[64+rdi]
+	movups	XMMWORD[80+rsi],xmm7
+	movdqu	xmm7,XMMWORD[80+rdi]
+	movups	XMMWORD[96+rsi],xmm8
+	movdqu	xmm8,XMMWORD[96+rdi]
+	movups	XMMWORD[112+rsi],xmm9
+	lea	rsi,[128+rsi]
+	movdqu	xmm9,XMMWORD[112+rdi]
+	lea	rdi,[128+rdi]
+$L$ecb_dec_loop8_enter:
 
 	call	_aesni_decrypt8
 
-	movups	xmm0,XMMWORD PTR[r11]
-	sub	rdx,080h
-	jnc	$L$ecb_dec_loop8
+	movups	xmm0,XMMWORD[r11]
+	sub	rdx,0x80
+	jnc	NEAR $L$ecb_dec_loop8
 
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	mov	rcx,r11
-	movups	XMMWORD PTR[16+rsi],xmm3
+	movups	XMMWORD[16+rsi],xmm3
 	mov	eax,r10d
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movups	XMMWORD PTR[80+rsi],xmm7
-	movups	XMMWORD PTR[96+rsi],xmm8
-	movups	XMMWORD PTR[112+rsi],xmm9
-	lea	rsi,QWORD PTR[128+rsi]
-	add	rdx,080h
-	jz	$L$ecb_ret
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	movups	XMMWORD[80+rsi],xmm7
+	movups	XMMWORD[96+rsi],xmm8
+	movups	XMMWORD[112+rsi],xmm9
+	lea	rsi,[128+rsi]
+	add	rdx,0x80
+	jz	NEAR $L$ecb_ret
 
-$L$ecb_dec_tail::
-	movups	xmm2,XMMWORD PTR[rdi]
-	cmp	rdx,020h
-	jb	$L$ecb_dec_one
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	je	$L$ecb_dec_two
-	movups	xmm4,XMMWORD PTR[32+rdi]
-	cmp	rdx,040h
-	jb	$L$ecb_dec_three
-	movups	xmm5,XMMWORD PTR[48+rdi]
-	je	$L$ecb_dec_four
-	movups	xmm6,XMMWORD PTR[64+rdi]
-	cmp	rdx,060h
-	jb	$L$ecb_dec_five
-	movups	xmm7,XMMWORD PTR[80+rdi]
-	je	$L$ecb_dec_six
-	movups	xmm8,XMMWORD PTR[96+rdi]
-	movups	xmm0,XMMWORD PTR[rcx]
+$L$ecb_dec_tail:
+	movups	xmm2,XMMWORD[rdi]
+	cmp	rdx,0x20
+	jb	NEAR $L$ecb_dec_one
+	movups	xmm3,XMMWORD[16+rdi]
+	je	NEAR $L$ecb_dec_two
+	movups	xmm4,XMMWORD[32+rdi]
+	cmp	rdx,0x40
+	jb	NEAR $L$ecb_dec_three
+	movups	xmm5,XMMWORD[48+rdi]
+	je	NEAR $L$ecb_dec_four
+	movups	xmm6,XMMWORD[64+rdi]
+	cmp	rdx,0x60
+	jb	NEAR $L$ecb_dec_five
+	movups	xmm7,XMMWORD[80+rdi]
+	je	NEAR $L$ecb_dec_six
+	movups	xmm8,XMMWORD[96+rdi]
+	movups	xmm0,XMMWORD[rcx]
 	call	_aesni_decrypt8
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movups	XMMWORD PTR[80+rsi],xmm7
-	movups	XMMWORD PTR[96+rsi],xmm8
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	movups	XMMWORD[80+rsi],xmm7
+	movups	XMMWORD[96+rsi],xmm8
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_dec_one::
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+$L$ecb_dec_one:
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_dec1_4::
+$L$oop_dec1_4:
 DB	102,15,56,222,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_dec1_4
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_dec1_4
 DB	102,15,56,223,209
-	movups	XMMWORD PTR[rsi],xmm2
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_dec_two::
+$L$ecb_dec_two:
 	call	_aesni_decrypt2
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_dec_three::
+$L$ecb_dec_three:
 	call	_aesni_decrypt3
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_dec_four::
+$L$ecb_dec_four:
 	call	_aesni_decrypt4
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_dec_five::
+$L$ecb_dec_five:
 	xorps	xmm7,xmm7
 	call	_aesni_decrypt6
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	jmp	$L$ecb_ret
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	jmp	NEAR $L$ecb_ret
 ALIGN	16
-$L$ecb_dec_six::
+$L$ecb_dec_six:
 	call	_aesni_decrypt6
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	movups	XMMWORD PTR[48+rsi],xmm5
-	movups	XMMWORD PTR[64+rsi],xmm6
-	movups	XMMWORD PTR[80+rsi],xmm7
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	movups	XMMWORD[48+rsi],xmm5
+	movups	XMMWORD[64+rsi],xmm6
+	movups	XMMWORD[80+rsi],xmm7
 
-$L$ecb_ret::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$ecb_ret:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_ecb_encrypt::
-aesni_ecb_encrypt	ENDP
-PUBLIC	aesni_ccm64_encrypt_blocks
+$L$SEH_end_aesni_ecb_encrypt:
+global	aesni_ccm64_encrypt_blocks
 
 ALIGN	16
-aesni_ccm64_encrypt_blocks	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_ccm64_encrypt_blocks:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_ccm64_encrypt_blocks::
+$L$SEH_begin_aesni_ccm64_encrypt_blocks:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-	lea	rsp,QWORD PTR[((-88))+rsp]
-	movaps	XMMWORD PTR[rsp],xmm6
-	movaps	XMMWORD PTR[16+rsp],xmm7
-	movaps	XMMWORD PTR[32+rsp],xmm8
-	movaps	XMMWORD PTR[48+rsp],xmm9
-$L$ccm64_enc_body::
-	mov	eax,DWORD PTR[240+rcx]
-	movdqu	xmm6,XMMWORD PTR[r8]
-	movdqa	xmm9,XMMWORD PTR[$L$increment64]
-	movdqa	xmm7,XMMWORD PTR[$L$bswap_mask]
+	lea	rsp,[((-88))+rsp]
+	movaps	XMMWORD[rsp],xmm6
+	movaps	XMMWORD[16+rsp],xmm7
+	movaps	XMMWORD[32+rsp],xmm8
+	movaps	XMMWORD[48+rsp],xmm9
+$L$ccm64_enc_body:
+	mov	eax,DWORD[240+rcx]
+	movdqu	xmm6,XMMWORD[r8]
+	movdqa	xmm9,XMMWORD[$L$increment64]
+	movdqa	xmm7,XMMWORD[$L$bswap_mask]
 
 	shl	eax,4
 	mov	r10d,16
-	lea	r11,QWORD PTR[rcx]
-	movdqu	xmm3,XMMWORD PTR[r9]
+	lea	r11,[rcx]
+	movdqu	xmm3,XMMWORD[r9]
 	movdqa	xmm2,xmm6
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	lea	rcx,[32+rax*1+rcx]
 DB	102,15,56,0,247
 	sub	r10,rax
-	jmp	$L$ccm64_enc_outer
+	jmp	NEAR $L$ccm64_enc_outer
 ALIGN	16
-$L$ccm64_enc_outer::
-	movups	xmm0,XMMWORD PTR[r11]
+$L$ccm64_enc_outer:
+	movups	xmm0,XMMWORD[r11]
 	mov	rax,r10
-	movups	xmm8,XMMWORD PTR[rdi]
+	movups	xmm8,XMMWORD[rdi]
 
 	xorps	xmm2,xmm0
-	movups	xmm1,XMMWORD PTR[16+r11]
+	movups	xmm1,XMMWORD[16+r11]
 	xorps	xmm0,xmm8
 	xorps	xmm3,xmm0
-	movups	xmm0,XMMWORD PTR[32+r11]
+	movups	xmm0,XMMWORD[32+r11]
 
-$L$ccm64_enc2_loop::
+$L$ccm64_enc2_loop:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$ccm64_enc2_loop
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$ccm64_enc2_loop
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 	paddq	xmm6,xmm9
@@ -878,458 +881,456 @@
 DB	102,15,56,221,208
 DB	102,15,56,221,216
 
-	lea	rdi,QWORD PTR[16+rdi]
+	lea	rdi,[16+rdi]
 	xorps	xmm8,xmm2
 	movdqa	xmm2,xmm6
-	movups	XMMWORD PTR[rsi],xmm8
+	movups	XMMWORD[rsi],xmm8
 DB	102,15,56,0,215
-	lea	rsi,QWORD PTR[16+rsi]
-	jnz	$L$ccm64_enc_outer
+	lea	rsi,[16+rsi]
+	jnz	NEAR $L$ccm64_enc_outer
 
-	movups	XMMWORD PTR[r9],xmm3
-	movaps	xmm6,XMMWORD PTR[rsp]
-	movaps	xmm7,XMMWORD PTR[16+rsp]
-	movaps	xmm8,XMMWORD PTR[32+rsp]
-	movaps	xmm9,XMMWORD PTR[48+rsp]
-	lea	rsp,QWORD PTR[88+rsp]
-$L$ccm64_enc_ret::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	movups	XMMWORD[r9],xmm3
+	movaps	xmm6,XMMWORD[rsp]
+	movaps	xmm7,XMMWORD[16+rsp]
+	movaps	xmm8,XMMWORD[32+rsp]
+	movaps	xmm9,XMMWORD[48+rsp]
+	lea	rsp,[88+rsp]
+$L$ccm64_enc_ret:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_ccm64_encrypt_blocks::
-aesni_ccm64_encrypt_blocks	ENDP
-PUBLIC	aesni_ccm64_decrypt_blocks
+$L$SEH_end_aesni_ccm64_encrypt_blocks:
+global	aesni_ccm64_decrypt_blocks
 
 ALIGN	16
-aesni_ccm64_decrypt_blocks	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_ccm64_decrypt_blocks:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_ccm64_decrypt_blocks::
+$L$SEH_begin_aesni_ccm64_decrypt_blocks:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-	lea	rsp,QWORD PTR[((-88))+rsp]
-	movaps	XMMWORD PTR[rsp],xmm6
-	movaps	XMMWORD PTR[16+rsp],xmm7
-	movaps	XMMWORD PTR[32+rsp],xmm8
-	movaps	XMMWORD PTR[48+rsp],xmm9
-$L$ccm64_dec_body::
-	mov	eax,DWORD PTR[240+rcx]
-	movups	xmm6,XMMWORD PTR[r8]
-	movdqu	xmm3,XMMWORD PTR[r9]
-	movdqa	xmm9,XMMWORD PTR[$L$increment64]
-	movdqa	xmm7,XMMWORD PTR[$L$bswap_mask]
+	lea	rsp,[((-88))+rsp]
+	movaps	XMMWORD[rsp],xmm6
+	movaps	XMMWORD[16+rsp],xmm7
+	movaps	XMMWORD[32+rsp],xmm8
+	movaps	XMMWORD[48+rsp],xmm9
+$L$ccm64_dec_body:
+	mov	eax,DWORD[240+rcx]
+	movups	xmm6,XMMWORD[r8]
+	movdqu	xmm3,XMMWORD[r9]
+	movdqa	xmm9,XMMWORD[$L$increment64]
+	movdqa	xmm7,XMMWORD[$L$bswap_mask]
 
 	movaps	xmm2,xmm6
 	mov	r10d,eax
 	mov	r11,rcx
 DB	102,15,56,0,247
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_enc1_5::
+$L$oop_enc1_5:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_enc1_5
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_enc1_5
 DB	102,15,56,221,209
 	shl	r10d,4
 	mov	eax,16
-	movups	xmm8,XMMWORD PTR[rdi]
+	movups	xmm8,XMMWORD[rdi]
 	paddq	xmm6,xmm9
-	lea	rdi,QWORD PTR[16+rdi]
+	lea	rdi,[16+rdi]
 	sub	rax,r10
-	lea	rcx,QWORD PTR[32+r10*1+r11]
+	lea	rcx,[32+r10*1+r11]
 	mov	r10,rax
-	jmp	$L$ccm64_dec_outer
+	jmp	NEAR $L$ccm64_dec_outer
 ALIGN	16
-$L$ccm64_dec_outer::
+$L$ccm64_dec_outer:
 	xorps	xmm8,xmm2
 	movdqa	xmm2,xmm6
-	movups	XMMWORD PTR[rsi],xmm8
-	lea	rsi,QWORD PTR[16+rsi]
+	movups	XMMWORD[rsi],xmm8
+	lea	rsi,[16+rsi]
 DB	102,15,56,0,215
 
 	sub	rdx,1
-	jz	$L$ccm64_dec_break
+	jz	NEAR $L$ccm64_dec_break
 
-	movups	xmm0,XMMWORD PTR[r11]
+	movups	xmm0,XMMWORD[r11]
 	mov	rax,r10
-	movups	xmm1,XMMWORD PTR[16+r11]
+	movups	xmm1,XMMWORD[16+r11]
 	xorps	xmm8,xmm0
 	xorps	xmm2,xmm0
 	xorps	xmm3,xmm8
-	movups	xmm0,XMMWORD PTR[32+r11]
-	jmp	$L$ccm64_dec2_loop
+	movups	xmm0,XMMWORD[32+r11]
+	jmp	NEAR $L$ccm64_dec2_loop
 ALIGN	16
-$L$ccm64_dec2_loop::
+$L$ccm64_dec2_loop:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
-	movups	xmm1,XMMWORD PTR[rax*1+rcx]
+	movups	xmm1,XMMWORD[rax*1+rcx]
 	add	rax,32
 DB	102,15,56,220,208
 DB	102,15,56,220,216
-	movups	xmm0,XMMWORD PTR[((-16))+rax*1+rcx]
-	jnz	$L$ccm64_dec2_loop
-	movups	xmm8,XMMWORD PTR[rdi]
+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
+	jnz	NEAR $L$ccm64_dec2_loop
+	movups	xmm8,XMMWORD[rdi]
 	paddq	xmm6,xmm9
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,221,208
 DB	102,15,56,221,216
-	lea	rdi,QWORD PTR[16+rdi]
-	jmp	$L$ccm64_dec_outer
+	lea	rdi,[16+rdi]
+	jmp	NEAR $L$ccm64_dec_outer
 
 ALIGN	16
-$L$ccm64_dec_break::
+$L$ccm64_dec_break:
 
-	mov	eax,DWORD PTR[240+r11]
-	movups	xmm0,XMMWORD PTR[r11]
-	movups	xmm1,XMMWORD PTR[16+r11]
+	mov	eax,DWORD[240+r11]
+	movups	xmm0,XMMWORD[r11]
+	movups	xmm1,XMMWORD[16+r11]
 	xorps	xmm8,xmm0
-	lea	r11,QWORD PTR[32+r11]
+	lea	r11,[32+r11]
 	xorps	xmm3,xmm8
-$L$oop_enc1_6::
+$L$oop_enc1_6:
 DB	102,15,56,220,217
 	dec	eax
-	movups	xmm1,XMMWORD PTR[r11]
-	lea	r11,QWORD PTR[16+r11]
-	jnz	$L$oop_enc1_6
+	movups	xmm1,XMMWORD[r11]
+	lea	r11,[16+r11]
+	jnz	NEAR $L$oop_enc1_6
 DB	102,15,56,221,217
-	movups	XMMWORD PTR[r9],xmm3
-	movaps	xmm6,XMMWORD PTR[rsp]
-	movaps	xmm7,XMMWORD PTR[16+rsp]
-	movaps	xmm8,XMMWORD PTR[32+rsp]
-	movaps	xmm9,XMMWORD PTR[48+rsp]
-	lea	rsp,QWORD PTR[88+rsp]
-$L$ccm64_dec_ret::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	movups	XMMWORD[r9],xmm3
+	movaps	xmm6,XMMWORD[rsp]
+	movaps	xmm7,XMMWORD[16+rsp]
+	movaps	xmm8,XMMWORD[32+rsp]
+	movaps	xmm9,XMMWORD[48+rsp]
+	lea	rsp,[88+rsp]
+$L$ccm64_dec_ret:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_ccm64_decrypt_blocks::
-aesni_ccm64_decrypt_blocks	ENDP
-PUBLIC	aesni_ctr32_encrypt_blocks
+$L$SEH_end_aesni_ccm64_decrypt_blocks:
+global	aesni_ctr32_encrypt_blocks
 
 ALIGN	16
-aesni_ctr32_encrypt_blocks	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_ctr32_encrypt_blocks:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_ctr32_encrypt_blocks::
+$L$SEH_begin_aesni_ctr32_encrypt_blocks:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
+	mov	r8,QWORD[40+rsp]
 
 
-	lea	rax,QWORD PTR[rsp]
+	lea	rax,[rsp]
 	push	rbp
 	sub	rsp,288
 	and	rsp,-16
-	movaps	XMMWORD PTR[(-168)+rax],xmm6
-	movaps	XMMWORD PTR[(-152)+rax],xmm7
-	movaps	XMMWORD PTR[(-136)+rax],xmm8
-	movaps	XMMWORD PTR[(-120)+rax],xmm9
-	movaps	XMMWORD PTR[(-104)+rax],xmm10
-	movaps	XMMWORD PTR[(-88)+rax],xmm11
-	movaps	XMMWORD PTR[(-72)+rax],xmm12
-	movaps	XMMWORD PTR[(-56)+rax],xmm13
-	movaps	XMMWORD PTR[(-40)+rax],xmm14
-	movaps	XMMWORD PTR[(-24)+rax],xmm15
-$L$ctr32_body::
-	lea	rbp,QWORD PTR[((-8))+rax]
+	movaps	XMMWORD[(-168)+rax],xmm6
+	movaps	XMMWORD[(-152)+rax],xmm7
+	movaps	XMMWORD[(-136)+rax],xmm8
+	movaps	XMMWORD[(-120)+rax],xmm9
+	movaps	XMMWORD[(-104)+rax],xmm10
+	movaps	XMMWORD[(-88)+rax],xmm11
+	movaps	XMMWORD[(-72)+rax],xmm12
+	movaps	XMMWORD[(-56)+rax],xmm13
+	movaps	XMMWORD[(-40)+rax],xmm14
+	movaps	XMMWORD[(-24)+rax],xmm15
+$L$ctr32_body:
+	lea	rbp,[((-8))+rax]
 
 	cmp	rdx,1
-	je	$L$ctr32_one_shortcut
+	je	NEAR $L$ctr32_one_shortcut
 
-	movdqu	xmm2,XMMWORD PTR[r8]
-	movdqu	xmm0,XMMWORD PTR[rcx]
-	mov	r8d,DWORD PTR[12+r8]
+	movdqu	xmm2,XMMWORD[r8]
+	movdqu	xmm0,XMMWORD[rcx]
+	mov	r8d,DWORD[12+r8]
 	pxor	xmm2,xmm0
-	mov	r11d,DWORD PTR[12+rcx]
-	movdqa	XMMWORD PTR[rsp],xmm2
+	mov	r11d,DWORD[12+rcx]
+	movdqa	XMMWORD[rsp],xmm2
 	bswap	r8d
 	movdqa	xmm3,xmm2
 	movdqa	xmm4,xmm2
 	movdqa	xmm5,xmm2
-	movdqa	XMMWORD PTR[64+rsp],xmm2
-	movdqa	XMMWORD PTR[80+rsp],xmm2
-	movdqa	XMMWORD PTR[96+rsp],xmm2
+	movdqa	XMMWORD[64+rsp],xmm2
+	movdqa	XMMWORD[80+rsp],xmm2
+	movdqa	XMMWORD[96+rsp],xmm2
 	mov	r10,rdx
-	movdqa	XMMWORD PTR[112+rsp],xmm2
+	movdqa	XMMWORD[112+rsp],xmm2
 
-	lea	rax,QWORD PTR[1+r8]
-	lea	rdx,QWORD PTR[2+r8]
+	lea	rax,[1+r8]
+	lea	rdx,[2+r8]
 	bswap	eax
 	bswap	edx
 	xor	eax,r11d
 	xor	edx,r11d
 DB	102,15,58,34,216,3
-	lea	rax,QWORD PTR[3+r8]
-	movdqa	XMMWORD PTR[16+rsp],xmm3
+	lea	rax,[3+r8]
+	movdqa	XMMWORD[16+rsp],xmm3
 DB	102,15,58,34,226,3
 	bswap	eax
 	mov	rdx,r10
-	lea	r10,QWORD PTR[4+r8]
-	movdqa	XMMWORD PTR[32+rsp],xmm4
+	lea	r10,[4+r8]
+	movdqa	XMMWORD[32+rsp],xmm4
 	xor	eax,r11d
 	bswap	r10d
 DB	102,15,58,34,232,3
 	xor	r10d,r11d
-	movdqa	XMMWORD PTR[48+rsp],xmm5
-	lea	r9,QWORD PTR[5+r8]
-	mov	DWORD PTR[((64+12))+rsp],r10d
+	movdqa	XMMWORD[48+rsp],xmm5
+	lea	r9,[5+r8]
+	mov	DWORD[((64+12))+rsp],r10d
 	bswap	r9d
-	lea	r10,QWORD PTR[6+r8]
-	mov	eax,DWORD PTR[240+rcx]
+	lea	r10,[6+r8]
+	mov	eax,DWORD[240+rcx]
 	xor	r9d,r11d
 	bswap	r10d
-	mov	DWORD PTR[((80+12))+rsp],r9d
+	mov	DWORD[((80+12))+rsp],r9d
 	xor	r10d,r11d
-	lea	r9,QWORD PTR[7+r8]
-	mov	DWORD PTR[((96+12))+rsp],r10d
+	lea	r9,[7+r8]
+	mov	DWORD[((96+12))+rsp],r10d
 	bswap	r9d
-	mov	r10d,DWORD PTR[((OPENSSL_ia32cap_P+4))]
+	mov	r10d,DWORD[((OPENSSL_ia32cap_P+4))]
 	xor	r9d,r11d
 	and	r10d,71303168
-	mov	DWORD PTR[((112+12))+rsp],r9d
+	mov	DWORD[((112+12))+rsp],r9d
 
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 
-	movdqa	xmm6,XMMWORD PTR[64+rsp]
-	movdqa	xmm7,XMMWORD PTR[80+rsp]
+	movdqa	xmm6,XMMWORD[64+rsp]
+	movdqa	xmm7,XMMWORD[80+rsp]
 
 	cmp	rdx,8
-	jb	$L$ctr32_tail
+	jb	NEAR $L$ctr32_tail
 
 	sub	rdx,6
 	cmp	r10d,4194304
-	je	$L$ctr32_6x
+	je	NEAR $L$ctr32_6x
 
-	lea	rcx,QWORD PTR[128+rcx]
+	lea	rcx,[128+rcx]
 	sub	rdx,2
-	jmp	$L$ctr32_loop8
+	jmp	NEAR $L$ctr32_loop8
 
 ALIGN	16
-$L$ctr32_6x::
+$L$ctr32_6x:
 	shl	eax,4
 	mov	r10d,48
 	bswap	r11d
-	lea	rcx,QWORD PTR[32+rax*1+rcx]
+	lea	rcx,[32+rax*1+rcx]
 	sub	r10,rax
-	jmp	$L$ctr32_loop6
+	jmp	NEAR $L$ctr32_loop6
 
 ALIGN	16
-$L$ctr32_loop6::
+$L$ctr32_loop6:
 	add	r8d,6
-	movups	xmm0,XMMWORD PTR[((-48))+r10*1+rcx]
+	movups	xmm0,XMMWORD[((-48))+r10*1+rcx]
 DB	102,15,56,220,209
 	mov	eax,r8d
 	xor	eax,r11d
 DB	102,15,56,220,217
-DB	00fh,038h,0f1h,044h,024h,12
-	lea	eax,DWORD PTR[1+r8]
+DB	0x0f,0x38,0xf1,0x44,0x24,12
+	lea	eax,[1+r8]
 DB	102,15,56,220,225
 	xor	eax,r11d
-DB	00fh,038h,0f1h,044h,024h,28
+DB	0x0f,0x38,0xf1,0x44,0x24,28
 DB	102,15,56,220,233
-	lea	eax,DWORD PTR[2+r8]
+	lea	eax,[2+r8]
 	xor	eax,r11d
 DB	102,15,56,220,241
-DB	00fh,038h,0f1h,044h,024h,44
-	lea	eax,DWORD PTR[3+r8]
+DB	0x0f,0x38,0xf1,0x44,0x24,44
+	lea	eax,[3+r8]
 DB	102,15,56,220,249
-	movups	xmm1,XMMWORD PTR[((-32))+r10*1+rcx]
+	movups	xmm1,XMMWORD[((-32))+r10*1+rcx]
 	xor	eax,r11d
 
 DB	102,15,56,220,208
-DB	00fh,038h,0f1h,044h,024h,60
-	lea	eax,DWORD PTR[4+r8]
+DB	0x0f,0x38,0xf1,0x44,0x24,60
+	lea	eax,[4+r8]
 DB	102,15,56,220,216
 	xor	eax,r11d
-DB	00fh,038h,0f1h,044h,024h,76
+DB	0x0f,0x38,0xf1,0x44,0x24,76
 DB	102,15,56,220,224
-	lea	eax,DWORD PTR[5+r8]
+	lea	eax,[5+r8]
 	xor	eax,r11d
 DB	102,15,56,220,232
-DB	00fh,038h,0f1h,044h,024h,92
+DB	0x0f,0x38,0xf1,0x44,0x24,92
 	mov	rax,r10
 DB	102,15,56,220,240
 DB	102,15,56,220,248
-	movups	xmm0,XMMWORD PTR[((-16))+r10*1+rcx]
+	movups	xmm0,XMMWORD[((-16))+r10*1+rcx]
 
 	call	$L$enc_loop6
 
-	movdqu	xmm8,XMMWORD PTR[rdi]
-	movdqu	xmm9,XMMWORD PTR[16+rdi]
-	movdqu	xmm10,XMMWORD PTR[32+rdi]
-	movdqu	xmm11,XMMWORD PTR[48+rdi]
-	movdqu	xmm12,XMMWORD PTR[64+rdi]
-	movdqu	xmm13,XMMWORD PTR[80+rdi]
-	lea	rdi,QWORD PTR[96+rdi]
-	movups	xmm1,XMMWORD PTR[((-64))+r10*1+rcx]
+	movdqu	xmm8,XMMWORD[rdi]
+	movdqu	xmm9,XMMWORD[16+rdi]
+	movdqu	xmm10,XMMWORD[32+rdi]
+	movdqu	xmm11,XMMWORD[48+rdi]
+	movdqu	xmm12,XMMWORD[64+rdi]
+	movdqu	xmm13,XMMWORD[80+rdi]
+	lea	rdi,[96+rdi]
+	movups	xmm1,XMMWORD[((-64))+r10*1+rcx]
 	pxor	xmm8,xmm2
-	movaps	xmm2,XMMWORD PTR[rsp]
+	movaps	xmm2,XMMWORD[rsp]
 	pxor	xmm9,xmm3
-	movaps	xmm3,XMMWORD PTR[16+rsp]
+	movaps	xmm3,XMMWORD[16+rsp]
 	pxor	xmm10,xmm4
-	movaps	xmm4,XMMWORD PTR[32+rsp]
+	movaps	xmm4,XMMWORD[32+rsp]
 	pxor	xmm11,xmm5
-	movaps	xmm5,XMMWORD PTR[48+rsp]
+	movaps	xmm5,XMMWORD[48+rsp]
 	pxor	xmm12,xmm6
-	movaps	xmm6,XMMWORD PTR[64+rsp]
+	movaps	xmm6,XMMWORD[64+rsp]
 	pxor	xmm13,xmm7
-	movaps	xmm7,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[rsi],xmm8
-	movdqu	XMMWORD PTR[16+rsi],xmm9
-	movdqu	XMMWORD PTR[32+rsi],xmm10
-	movdqu	XMMWORD PTR[48+rsi],xmm11
-	movdqu	XMMWORD PTR[64+rsi],xmm12
-	movdqu	XMMWORD PTR[80+rsi],xmm13
-	lea	rsi,QWORD PTR[96+rsi]
+	movaps	xmm7,XMMWORD[80+rsp]
+	movdqu	XMMWORD[rsi],xmm8
+	movdqu	XMMWORD[16+rsi],xmm9
+	movdqu	XMMWORD[32+rsi],xmm10
+	movdqu	XMMWORD[48+rsi],xmm11
+	movdqu	XMMWORD[64+rsi],xmm12
+	movdqu	XMMWORD[80+rsi],xmm13
+	lea	rsi,[96+rsi]
 
 	sub	rdx,6
-	jnc	$L$ctr32_loop6
+	jnc	NEAR $L$ctr32_loop6
 
 	add	rdx,6
-	jz	$L$ctr32_done
+	jz	NEAR $L$ctr32_done
 
-	lea	eax,DWORD PTR[((-48))+r10]
-	lea	rcx,QWORD PTR[((-80))+r10*1+rcx]
+	lea	eax,[((-48))+r10]
+	lea	rcx,[((-80))+r10*1+rcx]
 	neg	eax
 	shr	eax,4
-	jmp	$L$ctr32_tail
+	jmp	NEAR $L$ctr32_tail
 
 ALIGN	32
-$L$ctr32_loop8::
+$L$ctr32_loop8:
 	add	r8d,8
-	movdqa	xmm8,XMMWORD PTR[96+rsp]
+	movdqa	xmm8,XMMWORD[96+rsp]
 DB	102,15,56,220,209
 	mov	r9d,r8d
-	movdqa	xmm9,XMMWORD PTR[112+rsp]
+	movdqa	xmm9,XMMWORD[112+rsp]
 DB	102,15,56,220,217
 	bswap	r9d
-	movups	xmm0,XMMWORD PTR[((32-128))+rcx]
+	movups	xmm0,XMMWORD[((32-128))+rcx]
 DB	102,15,56,220,225
 	xor	r9d,r11d
 	nop
 DB	102,15,56,220,233
-	mov	DWORD PTR[((0+12))+rsp],r9d
-	lea	r9,QWORD PTR[1+r8]
+	mov	DWORD[((0+12))+rsp],r9d
+	lea	r9,[1+r8]
 DB	102,15,56,220,241
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm1,XMMWORD PTR[((48-128))+rcx]
+	movups	xmm1,XMMWORD[((48-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,208
 DB	102,15,56,220,216
 	xor	r9d,r11d
-DB	066h,090h
+DB	0x66,0x90
 DB	102,15,56,220,224
 DB	102,15,56,220,232
-	mov	DWORD PTR[((16+12))+rsp],r9d
-	lea	r9,QWORD PTR[2+r8]
+	mov	DWORD[((16+12))+rsp],r9d
+	lea	r9,[2+r8]
 DB	102,15,56,220,240
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((64-128))+rcx]
+	movups	xmm0,XMMWORD[((64-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 	xor	r9d,r11d
-DB	066h,090h
+DB	0x66,0x90
 DB	102,15,56,220,225
 DB	102,15,56,220,233
-	mov	DWORD PTR[((32+12))+rsp],r9d
-	lea	r9,QWORD PTR[3+r8]
+	mov	DWORD[((32+12))+rsp],r9d
+	lea	r9,[3+r8]
 DB	102,15,56,220,241
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm1,XMMWORD PTR[((80-128))+rcx]
+	movups	xmm1,XMMWORD[((80-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,208
 DB	102,15,56,220,216
 	xor	r9d,r11d
-DB	066h,090h
+DB	0x66,0x90
 DB	102,15,56,220,224
 DB	102,15,56,220,232
-	mov	DWORD PTR[((48+12))+rsp],r9d
-	lea	r9,QWORD PTR[4+r8]
+	mov	DWORD[((48+12))+rsp],r9d
+	lea	r9,[4+r8]
 DB	102,15,56,220,240
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((96-128))+rcx]
+	movups	xmm0,XMMWORD[((96-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 	xor	r9d,r11d
-DB	066h,090h
+DB	0x66,0x90
 DB	102,15,56,220,225
 DB	102,15,56,220,233
-	mov	DWORD PTR[((64+12))+rsp],r9d
-	lea	r9,QWORD PTR[5+r8]
+	mov	DWORD[((64+12))+rsp],r9d
+	lea	r9,[5+r8]
 DB	102,15,56,220,241
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm1,XMMWORD PTR[((112-128))+rcx]
+	movups	xmm1,XMMWORD[((112-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,208
 DB	102,15,56,220,216
 	xor	r9d,r11d
-DB	066h,090h
+DB	0x66,0x90
 DB	102,15,56,220,224
 DB	102,15,56,220,232
-	mov	DWORD PTR[((80+12))+rsp],r9d
-	lea	r9,QWORD PTR[6+r8]
+	mov	DWORD[((80+12))+rsp],r9d
+	lea	r9,[6+r8]
 DB	102,15,56,220,240
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((128-128))+rcx]
+	movups	xmm0,XMMWORD[((128-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 	xor	r9d,r11d
-DB	066h,090h
+DB	0x66,0x90
 DB	102,15,56,220,225
 DB	102,15,56,220,233
-	mov	DWORD PTR[((96+12))+rsp],r9d
-	lea	r9,QWORD PTR[7+r8]
+	mov	DWORD[((96+12))+rsp],r9d
+	lea	r9,[7+r8]
 DB	102,15,56,220,241
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm1,XMMWORD PTR[((144-128))+rcx]
+	movups	xmm1,XMMWORD[((144-128))+rcx]
 	bswap	r9d
 DB	102,15,56,220,208
 DB	102,15,56,220,216
 DB	102,15,56,220,224
 	xor	r9d,r11d
-	movdqu	xmm10,XMMWORD PTR[rdi]
+	movdqu	xmm10,XMMWORD[rdi]
 DB	102,15,56,220,232
-	mov	DWORD PTR[((112+12))+rsp],r9d
+	mov	DWORD[((112+12))+rsp],r9d
 	cmp	eax,11
 DB	102,15,56,220,240
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((160-128))+rcx]
+	movups	xmm0,XMMWORD[((160-128))+rcx]
 
-	jb	$L$ctr32_enc_done
+	jb	NEAR $L$ctr32_enc_done
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
@@ -1339,7 +1340,7 @@
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm1,XMMWORD PTR[((176-128))+rcx]
+	movups	xmm1,XMMWORD[((176-128))+rcx]
 
 DB	102,15,56,220,208
 DB	102,15,56,220,216
@@ -1349,8 +1350,8 @@
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((192-128))+rcx]
-	je	$L$ctr32_enc_done
+	movups	xmm0,XMMWORD[((192-128))+rcx]
+	je	NEAR $L$ctr32_enc_done
 
 DB	102,15,56,220,209
 DB	102,15,56,220,217
@@ -1360,7 +1361,7 @@
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movups	xmm1,XMMWORD PTR[((208-128))+rcx]
+	movups	xmm1,XMMWORD[((208-128))+rcx]
 
 DB	102,15,56,220,208
 DB	102,15,56,220,216
@@ -1370,20 +1371,20 @@
 DB	102,15,56,220,248
 DB	102,68,15,56,220,192
 DB	102,68,15,56,220,200
-	movups	xmm0,XMMWORD PTR[((224-128))+rcx]
-	jmp	$L$ctr32_enc_done
+	movups	xmm0,XMMWORD[((224-128))+rcx]
+	jmp	NEAR $L$ctr32_enc_done
 
 ALIGN	16
-$L$ctr32_enc_done::
-	movdqu	xmm11,XMMWORD PTR[16+rdi]
+$L$ctr32_enc_done:
+	movdqu	xmm11,XMMWORD[16+rdi]
 	pxor	xmm10,xmm0
-	movdqu	xmm12,XMMWORD PTR[32+rdi]
+	movdqu	xmm12,XMMWORD[32+rdi]
 	pxor	xmm11,xmm0
-	movdqu	xmm13,XMMWORD PTR[48+rdi]
+	movdqu	xmm13,XMMWORD[48+rdi]
 	pxor	xmm12,xmm0
-	movdqu	xmm14,XMMWORD PTR[64+rdi]
+	movdqu	xmm14,XMMWORD[64+rdi]
 	pxor	xmm13,xmm0
-	movdqu	xmm15,XMMWORD PTR[80+rdi]
+	movdqu	xmm15,XMMWORD[80+rdi]
 	pxor	xmm14,xmm0
 	pxor	xmm15,xmm0
 DB	102,15,56,220,209
@@ -1394,259 +1395,258 @@
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 DB	102,68,15,56,220,201
-	movdqu	xmm1,XMMWORD PTR[96+rdi]
-	lea	rdi,QWORD PTR[128+rdi]
+	movdqu	xmm1,XMMWORD[96+rdi]
+	lea	rdi,[128+rdi]
 
 DB	102,65,15,56,221,210
 	pxor	xmm1,xmm0
-	movdqu	xmm10,XMMWORD PTR[((112-128))+rdi]
+	movdqu	xmm10,XMMWORD[((112-128))+rdi]
 DB	102,65,15,56,221,219
 	pxor	xmm10,xmm0
-	movdqa	xmm11,XMMWORD PTR[rsp]
+	movdqa	xmm11,XMMWORD[rsp]
 DB	102,65,15,56,221,228
 DB	102,65,15,56,221,237
-	movdqa	xmm12,XMMWORD PTR[16+rsp]
-	movdqa	xmm13,XMMWORD PTR[32+rsp]
+	movdqa	xmm12,XMMWORD[16+rsp]
+	movdqa	xmm13,XMMWORD[32+rsp]
 DB	102,65,15,56,221,246
 DB	102,65,15,56,221,255
-	movdqa	xmm14,XMMWORD PTR[48+rsp]
-	movdqa	xmm15,XMMWORD PTR[64+rsp]
+	movdqa	xmm14,XMMWORD[48+rsp]
+	movdqa	xmm15,XMMWORD[64+rsp]
 DB	102,68,15,56,221,193
-	movdqa	xmm0,XMMWORD PTR[80+rsp]
-	movups	xmm1,XMMWORD PTR[((16-128))+rcx]
+	movdqa	xmm0,XMMWORD[80+rsp]
+	movups	xmm1,XMMWORD[((16-128))+rcx]
 DB	102,69,15,56,221,202
 
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	movdqa	xmm2,xmm11
-	movups	XMMWORD PTR[16+rsi],xmm3
+	movups	XMMWORD[16+rsi],xmm3
 	movdqa	xmm3,xmm12
-	movups	XMMWORD PTR[32+rsi],xmm4
+	movups	XMMWORD[32+rsi],xmm4
 	movdqa	xmm4,xmm13
-	movups	XMMWORD PTR[48+rsi],xmm5
+	movups	XMMWORD[48+rsi],xmm5
 	movdqa	xmm5,xmm14
-	movups	XMMWORD PTR[64+rsi],xmm6
+	movups	XMMWORD[64+rsi],xmm6
 	movdqa	xmm6,xmm15
-	movups	XMMWORD PTR[80+rsi],xmm7
+	movups	XMMWORD[80+rsi],xmm7
 	movdqa	xmm7,xmm0
-	movups	XMMWORD PTR[96+rsi],xmm8
-	movups	XMMWORD PTR[112+rsi],xmm9
-	lea	rsi,QWORD PTR[128+rsi]
+	movups	XMMWORD[96+rsi],xmm8
+	movups	XMMWORD[112+rsi],xmm9
+	lea	rsi,[128+rsi]
 
 	sub	rdx,8
-	jnc	$L$ctr32_loop8
+	jnc	NEAR $L$ctr32_loop8
 
 	add	rdx,8
-	jz	$L$ctr32_done
-	lea	rcx,QWORD PTR[((-128))+rcx]
+	jz	NEAR $L$ctr32_done
+	lea	rcx,[((-128))+rcx]
 
-$L$ctr32_tail::
-	lea	rcx,QWORD PTR[16+rcx]
+$L$ctr32_tail:
+	lea	rcx,[16+rcx]
 	cmp	rdx,4
-	jb	$L$ctr32_loop3
-	je	$L$ctr32_loop4
+	jb	NEAR $L$ctr32_loop3
+	je	NEAR $L$ctr32_loop4
 
 	shl	eax,4
-	movdqa	xmm8,XMMWORD PTR[96+rsp]
+	movdqa	xmm8,XMMWORD[96+rsp]
 	pxor	xmm9,xmm9
 
-	movups	xmm0,XMMWORD PTR[16+rcx]
+	movups	xmm0,XMMWORD[16+rcx]
 DB	102,15,56,220,209
 DB	102,15,56,220,217
-	lea	rcx,QWORD PTR[((32-16))+rax*1+rcx]
+	lea	rcx,[((32-16))+rax*1+rcx]
 	neg	rax
 DB	102,15,56,220,225
 	add	rax,16
-	movups	xmm10,XMMWORD PTR[rdi]
+	movups	xmm10,XMMWORD[rdi]
 DB	102,15,56,220,233
 DB	102,15,56,220,241
-	movups	xmm11,XMMWORD PTR[16+rdi]
-	movups	xmm12,XMMWORD PTR[32+rdi]
+	movups	xmm11,XMMWORD[16+rdi]
+	movups	xmm12,XMMWORD[32+rdi]
 DB	102,15,56,220,249
 DB	102,68,15,56,220,193
 
 	call	$L$enc_loop8_enter
 
-	movdqu	xmm13,XMMWORD PTR[48+rdi]
+	movdqu	xmm13,XMMWORD[48+rdi]
 	pxor	xmm2,xmm10
-	movdqu	xmm10,XMMWORD PTR[64+rdi]
+	movdqu	xmm10,XMMWORD[64+rdi]
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm6,xmm10
-	movdqu	XMMWORD PTR[48+rsi],xmm5
-	movdqu	XMMWORD PTR[64+rsi],xmm6
+	movdqu	XMMWORD[48+rsi],xmm5
+	movdqu	XMMWORD[64+rsi],xmm6
 	cmp	rdx,6
-	jb	$L$ctr32_done
+	jb	NEAR $L$ctr32_done
 
-	movups	xmm11,XMMWORD PTR[80+rdi]
+	movups	xmm11,XMMWORD[80+rdi]
 	xorps	xmm7,xmm11
-	movups	XMMWORD PTR[80+rsi],xmm7
-	je	$L$ctr32_done
+	movups	XMMWORD[80+rsi],xmm7
+	je	NEAR $L$ctr32_done
 
-	movups	xmm12,XMMWORD PTR[96+rdi]
+	movups	xmm12,XMMWORD[96+rdi]
 	xorps	xmm8,xmm12
-	movups	XMMWORD PTR[96+rsi],xmm8
-	jmp	$L$ctr32_done
+	movups	XMMWORD[96+rsi],xmm8
+	jmp	NEAR $L$ctr32_done
 
 ALIGN	32
-$L$ctr32_loop4::
+$L$ctr32_loop4:
 DB	102,15,56,220,209
-	lea	rcx,QWORD PTR[16+rcx]
+	lea	rcx,[16+rcx]
 	dec	eax
 DB	102,15,56,220,217
 DB	102,15,56,220,225
 DB	102,15,56,220,233
-	movups	xmm1,XMMWORD PTR[rcx]
-	jnz	$L$ctr32_loop4
+	movups	xmm1,XMMWORD[rcx]
+	jnz	NEAR $L$ctr32_loop4
 DB	102,15,56,221,209
 DB	102,15,56,221,217
-	movups	xmm10,XMMWORD PTR[rdi]
-	movups	xmm11,XMMWORD PTR[16+rdi]
+	movups	xmm10,XMMWORD[rdi]
+	movups	xmm11,XMMWORD[16+rdi]
 DB	102,15,56,221,225
 DB	102,15,56,221,233
-	movups	xmm12,XMMWORD PTR[32+rdi]
-	movups	xmm13,XMMWORD PTR[48+rdi]
+	movups	xmm12,XMMWORD[32+rdi]
+	movups	xmm13,XMMWORD[48+rdi]
 
 	xorps	xmm2,xmm10
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	xorps	xmm3,xmm11
-	movups	XMMWORD PTR[16+rsi],xmm3
+	movups	XMMWORD[16+rsi],xmm3
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[48+rsi],xmm5
-	jmp	$L$ctr32_done
+	movdqu	XMMWORD[48+rsi],xmm5
+	jmp	NEAR $L$ctr32_done
 
 ALIGN	32
-$L$ctr32_loop3::
+$L$ctr32_loop3:
 DB	102,15,56,220,209
-	lea	rcx,QWORD PTR[16+rcx]
+	lea	rcx,[16+rcx]
 	dec	eax
 DB	102,15,56,220,217
 DB	102,15,56,220,225
-	movups	xmm1,XMMWORD PTR[rcx]
-	jnz	$L$ctr32_loop3
+	movups	xmm1,XMMWORD[rcx]
+	jnz	NEAR $L$ctr32_loop3
 DB	102,15,56,221,209
 DB	102,15,56,221,217
 DB	102,15,56,221,225
 
-	movups	xmm10,XMMWORD PTR[rdi]
+	movups	xmm10,XMMWORD[rdi]
 	xorps	xmm2,xmm10
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	cmp	rdx,2
-	jb	$L$ctr32_done
+	jb	NEAR $L$ctr32_done
 
-	movups	xmm11,XMMWORD PTR[16+rdi]
+	movups	xmm11,XMMWORD[16+rdi]
 	xorps	xmm3,xmm11
-	movups	XMMWORD PTR[16+rsi],xmm3
-	je	$L$ctr32_done
+	movups	XMMWORD[16+rsi],xmm3
+	je	NEAR $L$ctr32_done
 
-	movups	xmm12,XMMWORD PTR[32+rdi]
+	movups	xmm12,XMMWORD[32+rdi]
 	xorps	xmm4,xmm12
-	movups	XMMWORD PTR[32+rsi],xmm4
-	jmp	$L$ctr32_done
+	movups	XMMWORD[32+rsi],xmm4
+	jmp	NEAR $L$ctr32_done
 
 ALIGN	16
-$L$ctr32_one_shortcut::
-	movups	xmm2,XMMWORD PTR[r8]
-	movups	xmm10,XMMWORD PTR[rdi]
-	mov	eax,DWORD PTR[240+rcx]
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+$L$ctr32_one_shortcut:
+	movups	xmm2,XMMWORD[r8]
+	movups	xmm10,XMMWORD[rdi]
+	mov	eax,DWORD[240+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_enc1_7::
+$L$oop_enc1_7:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_enc1_7
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_enc1_7
 DB	102,15,56,221,209
 	xorps	xmm2,xmm10
-	movups	XMMWORD PTR[rsi],xmm2
-	jmp	$L$ctr32_done
+	movups	XMMWORD[rsi],xmm2
+	jmp	NEAR $L$ctr32_done
 
 ALIGN	16
-$L$ctr32_done::
-	movaps	xmm6,XMMWORD PTR[((-160))+rbp]
-	movaps	xmm7,XMMWORD PTR[((-144))+rbp]
-	movaps	xmm8,XMMWORD PTR[((-128))+rbp]
-	movaps	xmm9,XMMWORD PTR[((-112))+rbp]
-	movaps	xmm10,XMMWORD PTR[((-96))+rbp]
-	movaps	xmm11,XMMWORD PTR[((-80))+rbp]
-	movaps	xmm12,XMMWORD PTR[((-64))+rbp]
-	movaps	xmm13,XMMWORD PTR[((-48))+rbp]
-	movaps	xmm14,XMMWORD PTR[((-32))+rbp]
-	movaps	xmm15,XMMWORD PTR[((-16))+rbp]
-	lea	rsp,QWORD PTR[rbp]
+$L$ctr32_done:
+	movaps	xmm6,XMMWORD[((-160))+rbp]
+	movaps	xmm7,XMMWORD[((-144))+rbp]
+	movaps	xmm8,XMMWORD[((-128))+rbp]
+	movaps	xmm9,XMMWORD[((-112))+rbp]
+	movaps	xmm10,XMMWORD[((-96))+rbp]
+	movaps	xmm11,XMMWORD[((-80))+rbp]
+	movaps	xmm12,XMMWORD[((-64))+rbp]
+	movaps	xmm13,XMMWORD[((-48))+rbp]
+	movaps	xmm14,XMMWORD[((-32))+rbp]
+	movaps	xmm15,XMMWORD[((-16))+rbp]
+	lea	rsp,[rbp]
 	pop	rbp
-$L$ctr32_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$ctr32_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_ctr32_encrypt_blocks::
-aesni_ctr32_encrypt_blocks	ENDP
-PUBLIC	aesni_xts_encrypt
+$L$SEH_end_aesni_ctr32_encrypt_blocks:
+global	aesni_xts_encrypt
 
 ALIGN	16
-aesni_xts_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_xts_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_xts_encrypt::
+$L$SEH_begin_aesni_xts_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-	lea	rax,QWORD PTR[rsp]
+	lea	rax,[rsp]
 	push	rbp
 	sub	rsp,272
 	and	rsp,-16
-	movaps	XMMWORD PTR[(-168)+rax],xmm6
-	movaps	XMMWORD PTR[(-152)+rax],xmm7
-	movaps	XMMWORD PTR[(-136)+rax],xmm8
-	movaps	XMMWORD PTR[(-120)+rax],xmm9
-	movaps	XMMWORD PTR[(-104)+rax],xmm10
-	movaps	XMMWORD PTR[(-88)+rax],xmm11
-	movaps	XMMWORD PTR[(-72)+rax],xmm12
-	movaps	XMMWORD PTR[(-56)+rax],xmm13
-	movaps	XMMWORD PTR[(-40)+rax],xmm14
-	movaps	XMMWORD PTR[(-24)+rax],xmm15
-$L$xts_enc_body::
-	lea	rbp,QWORD PTR[((-8))+rax]
-	movups	xmm2,XMMWORD PTR[r9]
-	mov	eax,DWORD PTR[240+r8]
-	mov	r10d,DWORD PTR[240+rcx]
-	movups	xmm0,XMMWORD PTR[r8]
-	movups	xmm1,XMMWORD PTR[16+r8]
-	lea	r8,QWORD PTR[32+r8]
+	movaps	XMMWORD[(-168)+rax],xmm6
+	movaps	XMMWORD[(-152)+rax],xmm7
+	movaps	XMMWORD[(-136)+rax],xmm8
+	movaps	XMMWORD[(-120)+rax],xmm9
+	movaps	XMMWORD[(-104)+rax],xmm10
+	movaps	XMMWORD[(-88)+rax],xmm11
+	movaps	XMMWORD[(-72)+rax],xmm12
+	movaps	XMMWORD[(-56)+rax],xmm13
+	movaps	XMMWORD[(-40)+rax],xmm14
+	movaps	XMMWORD[(-24)+rax],xmm15
+$L$xts_enc_body:
+	lea	rbp,[((-8))+rax]
+	movups	xmm2,XMMWORD[r9]
+	mov	eax,DWORD[240+r8]
+	mov	r10d,DWORD[240+rcx]
+	movups	xmm0,XMMWORD[r8]
+	movups	xmm1,XMMWORD[16+r8]
+	lea	r8,[32+r8]
 	xorps	xmm2,xmm0
-$L$oop_enc1_8::
+$L$oop_enc1_8:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[r8]
-	lea	r8,QWORD PTR[16+r8]
-	jnz	$L$oop_enc1_8
+	movups	xmm1,XMMWORD[r8]
+	lea	r8,[16+r8]
+	jnz	NEAR $L$oop_enc1_8
 DB	102,15,56,221,209
-	movups	xmm0,XMMWORD PTR[rcx]
+	movups	xmm0,XMMWORD[rcx]
 	mov	r11,rcx
 	mov	eax,r10d
 	shl	r10d,4
 	mov	r9,rdx
 	and	rdx,-16
 
-	movups	xmm1,XMMWORD PTR[16+r10*1+rcx]
+	movups	xmm1,XMMWORD[16+r10*1+rcx]
 
-	movdqa	xmm8,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm8,XMMWORD[$L$xts_magic]
 	movdqa	xmm15,xmm2
-	pshufd	xmm9,xmm2,05fh
+	pshufd	xmm9,xmm2,0x5f
 	pxor	xmm1,xmm0
 	movdqa	xmm14,xmm9
 	paddd	xmm9,xmm9
@@ -1686,76 +1686,76 @@
 	pand	xmm9,xmm8
 	pxor	xmm14,xmm0
 	pxor	xmm15,xmm9
-	movaps	XMMWORD PTR[96+rsp],xmm1
+	movaps	XMMWORD[96+rsp],xmm1
 
 	sub	rdx,16*6
-	jc	$L$xts_enc_short
+	jc	NEAR $L$xts_enc_short
 
 	mov	eax,16+96
-	lea	rcx,QWORD PTR[32+r10*1+r11]
+	lea	rcx,[32+r10*1+r11]
 	sub	rax,r10
-	movups	xmm1,XMMWORD PTR[16+r11]
+	movups	xmm1,XMMWORD[16+r11]
 	mov	r10,rax
-	lea	r8,QWORD PTR[$L$xts_magic]
-	jmp	$L$xts_enc_grandloop
+	lea	r8,[$L$xts_magic]
+	jmp	NEAR $L$xts_enc_grandloop
 
 ALIGN	32
-$L$xts_enc_grandloop::
-	movdqu	xmm2,XMMWORD PTR[rdi]
+$L$xts_enc_grandloop:
+	movdqu	xmm2,XMMWORD[rdi]
 	movdqa	xmm8,xmm0
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
 	pxor	xmm2,xmm10
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
 	pxor	xmm3,xmm11
 DB	102,15,56,220,209
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
 	pxor	xmm4,xmm12
 DB	102,15,56,220,217
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
 	pxor	xmm5,xmm13
 DB	102,15,56,220,225
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
+	movdqu	xmm7,XMMWORD[80+rdi]
 	pxor	xmm8,xmm15
-	movdqa	xmm9,XMMWORD PTR[96+rsp]
+	movdqa	xmm9,XMMWORD[96+rsp]
 	pxor	xmm6,xmm14
 DB	102,15,56,220,233
-	movups	xmm0,XMMWORD PTR[32+r11]
-	lea	rdi,QWORD PTR[96+rdi]
+	movups	xmm0,XMMWORD[32+r11]
+	lea	rdi,[96+rdi]
 	pxor	xmm7,xmm8
 
 	pxor	xmm10,xmm9
 DB	102,15,56,220,241
 	pxor	xmm11,xmm9
-	movdqa	XMMWORD PTR[rsp],xmm10
+	movdqa	XMMWORD[rsp],xmm10
 DB	102,15,56,220,249
-	movups	xmm1,XMMWORD PTR[48+r11]
+	movups	xmm1,XMMWORD[48+r11]
 	pxor	xmm12,xmm9
 
 DB	102,15,56,220,208
 	pxor	xmm13,xmm9
-	movdqa	XMMWORD PTR[16+rsp],xmm11
+	movdqa	XMMWORD[16+rsp],xmm11
 DB	102,15,56,220,216
 	pxor	xmm14,xmm9
-	movdqa	XMMWORD PTR[32+rsp],xmm12
+	movdqa	XMMWORD[32+rsp],xmm12
 DB	102,15,56,220,224
 DB	102,15,56,220,232
 	pxor	xmm8,xmm9
-	movdqa	XMMWORD PTR[64+rsp],xmm14
+	movdqa	XMMWORD[64+rsp],xmm14
 DB	102,15,56,220,240
 DB	102,15,56,220,248
-	movups	xmm0,XMMWORD PTR[64+r11]
-	movdqa	XMMWORD PTR[80+rsp],xmm8
-	pshufd	xmm9,xmm15,05fh
-	jmp	$L$xts_enc_loop6
+	movups	xmm0,XMMWORD[64+r11]
+	movdqa	XMMWORD[80+rsp],xmm8
+	pshufd	xmm9,xmm15,0x5f
+	jmp	NEAR $L$xts_enc_loop6
 ALIGN	32
-$L$xts_enc_loop6::
+$L$xts_enc_loop6:
 DB	102,15,56,220,209
 DB	102,15,56,220,217
 DB	102,15,56,220,225
 DB	102,15,56,220,233
 DB	102,15,56,220,241
 DB	102,15,56,220,249
-	movups	xmm1,XMMWORD PTR[((-64))+rax*1+rcx]
+	movups	xmm1,XMMWORD[((-64))+rax*1+rcx]
 	add	rax,32
 
 DB	102,15,56,220,208
@@ -1764,10 +1764,10 @@
 DB	102,15,56,220,232
 DB	102,15,56,220,240
 DB	102,15,56,220,248
-	movups	xmm0,XMMWORD PTR[((-80))+rax*1+rcx]
-	jnz	$L$xts_enc_loop6
+	movups	xmm0,XMMWORD[((-80))+rax*1+rcx]
+	jnz	NEAR $L$xts_enc_loop6
 
-	movdqa	xmm8,XMMWORD PTR[r8]
+	movdqa	xmm8,XMMWORD[r8]
 	movdqa	xmm14,xmm9
 	paddd	xmm9,xmm9
 DB	102,15,56,220,209
@@ -1775,14 +1775,14 @@
 	psrad	xmm14,31
 DB	102,15,56,220,217
 	pand	xmm14,xmm8
-	movups	xmm10,XMMWORD PTR[r11]
+	movups	xmm10,XMMWORD[r11]
 DB	102,15,56,220,225
 DB	102,15,56,220,233
 DB	102,15,56,220,241
 	pxor	xmm15,xmm14
 	movaps	xmm11,xmm10
 DB	102,15,56,220,249
-	movups	xmm1,XMMWORD PTR[((-64))+rcx]
+	movups	xmm1,XMMWORD[((-64))+rcx]
 
 	movdqa	xmm14,xmm9
 DB	102,15,56,220,208
@@ -1799,7 +1799,7 @@
 	pxor	xmm15,xmm14
 	movdqa	xmm14,xmm9
 DB	102,15,56,220,248
-	movups	xmm0,XMMWORD PTR[((-48))+rcx]
+	movups	xmm0,XMMWORD[((-48))+rcx]
 
 	paddd	xmm9,xmm9
 DB	102,15,56,220,209
@@ -1810,13 +1810,13 @@
 	pand	xmm14,xmm8
 DB	102,15,56,220,225
 DB	102,15,56,220,233
-	movdqa	XMMWORD PTR[48+rsp],xmm13
+	movdqa	XMMWORD[48+rsp],xmm13
 	pxor	xmm15,xmm14
 DB	102,15,56,220,241
 	movaps	xmm13,xmm12
 	movdqa	xmm14,xmm9
 DB	102,15,56,220,249
-	movups	xmm1,XMMWORD PTR[((-32))+rcx]
+	movups	xmm1,XMMWORD[((-32))+rcx]
 
 	paddd	xmm9,xmm9
 DB	102,15,56,220,208
@@ -1843,10 +1843,10 @@
 DB	102,15,56,220,225
 DB	102,15,56,220,233
 	pxor	xmm15,xmm0
-	movups	xmm0,XMMWORD PTR[r11]
+	movups	xmm0,XMMWORD[r11]
 DB	102,15,56,220,241
 DB	102,15,56,220,249
-	movups	xmm1,XMMWORD PTR[16+r11]
+	movups	xmm1,XMMWORD[16+r11]
 
 	pxor	xmm14,xmm15
 DB	102,15,56,221,84,36,0
@@ -1861,47 +1861,47 @@
 DB	102,15,56,221,124,36,80
 	pxor	xmm15,xmm9
 
-	lea	rsi,QWORD PTR[96+rsi]
-	movups	XMMWORD PTR[(-96)+rsi],xmm2
-	movups	XMMWORD PTR[(-80)+rsi],xmm3
-	movups	XMMWORD PTR[(-64)+rsi],xmm4
-	movups	XMMWORD PTR[(-48)+rsi],xmm5
-	movups	XMMWORD PTR[(-32)+rsi],xmm6
-	movups	XMMWORD PTR[(-16)+rsi],xmm7
+	lea	rsi,[96+rsi]
+	movups	XMMWORD[(-96)+rsi],xmm2
+	movups	XMMWORD[(-80)+rsi],xmm3
+	movups	XMMWORD[(-64)+rsi],xmm4
+	movups	XMMWORD[(-48)+rsi],xmm5
+	movups	XMMWORD[(-32)+rsi],xmm6
+	movups	XMMWORD[(-16)+rsi],xmm7
 	sub	rdx,16*6
-	jnc	$L$xts_enc_grandloop
+	jnc	NEAR $L$xts_enc_grandloop
 
 	mov	eax,16+96
 	sub	eax,r10d
 	mov	rcx,r11
 	shr	eax,4
 
-$L$xts_enc_short::
+$L$xts_enc_short:
 	mov	r10d,eax
 	pxor	xmm10,xmm0
 	add	rdx,16*6
-	jz	$L$xts_enc_done
+	jz	NEAR $L$xts_enc_done
 
 	pxor	xmm11,xmm0
-	cmp	rdx,020h
-	jb	$L$xts_enc_one
+	cmp	rdx,0x20
+	jb	NEAR $L$xts_enc_one
 	pxor	xmm12,xmm0
-	je	$L$xts_enc_two
+	je	NEAR $L$xts_enc_two
 
 	pxor	xmm13,xmm0
-	cmp	rdx,040h
-	jb	$L$xts_enc_three
+	cmp	rdx,0x40
+	jb	NEAR $L$xts_enc_three
 	pxor	xmm14,xmm0
-	je	$L$xts_enc_four
+	je	NEAR $L$xts_enc_four
 
-	movdqu	xmm2,XMMWORD PTR[rdi]
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
+	movdqu	xmm2,XMMWORD[rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
 	pxor	xmm2,xmm10
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
 	pxor	xmm3,xmm11
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
-	lea	rdi,QWORD PTR[80+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
+	lea	rdi,[80+rdi]
 	pxor	xmm4,xmm12
 	pxor	xmm5,xmm13
 	pxor	xmm6,xmm14
@@ -1912,43 +1912,43 @@
 	movdqa	xmm10,xmm15
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	xorps	xmm5,xmm13
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	xorps	xmm6,xmm14
-	movdqu	XMMWORD PTR[32+rsi],xmm4
-	movdqu	XMMWORD PTR[48+rsi],xmm5
-	movdqu	XMMWORD PTR[64+rsi],xmm6
-	lea	rsi,QWORD PTR[80+rsi]
-	jmp	$L$xts_enc_done
+	movdqu	XMMWORD[32+rsi],xmm4
+	movdqu	XMMWORD[48+rsi],xmm5
+	movdqu	XMMWORD[64+rsi],xmm6
+	lea	rsi,[80+rsi]
+	jmp	NEAR $L$xts_enc_done
 
 ALIGN	16
-$L$xts_enc_one::
-	movups	xmm2,XMMWORD PTR[rdi]
-	lea	rdi,QWORD PTR[16+rdi]
+$L$xts_enc_one:
+	movups	xmm2,XMMWORD[rdi]
+	lea	rdi,[16+rdi]
 	xorps	xmm2,xmm10
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_enc1_9::
+$L$oop_enc1_9:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_enc1_9
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_enc1_9
 DB	102,15,56,221,209
 	xorps	xmm2,xmm10
 	movdqa	xmm10,xmm11
-	movups	XMMWORD PTR[rsi],xmm2
-	lea	rsi,QWORD PTR[16+rsi]
-	jmp	$L$xts_enc_done
+	movups	XMMWORD[rsi],xmm2
+	lea	rsi,[16+rsi]
+	jmp	NEAR $L$xts_enc_done
 
 ALIGN	16
-$L$xts_enc_two::
-	movups	xmm2,XMMWORD PTR[rdi]
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	lea	rdi,QWORD PTR[32+rdi]
+$L$xts_enc_two:
+	movups	xmm2,XMMWORD[rdi]
+	movups	xmm3,XMMWORD[16+rdi]
+	lea	rdi,[32+rdi]
 	xorps	xmm2,xmm10
 	xorps	xmm3,xmm11
 
@@ -1957,17 +1957,17 @@
 	xorps	xmm2,xmm10
 	movdqa	xmm10,xmm12
 	xorps	xmm3,xmm11
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	lea	rsi,QWORD PTR[32+rsi]
-	jmp	$L$xts_enc_done
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	lea	rsi,[32+rsi]
+	jmp	NEAR $L$xts_enc_done
 
 ALIGN	16
-$L$xts_enc_three::
-	movups	xmm2,XMMWORD PTR[rdi]
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	movups	xmm4,XMMWORD PTR[32+rdi]
-	lea	rdi,QWORD PTR[48+rdi]
+$L$xts_enc_three:
+	movups	xmm2,XMMWORD[rdi]
+	movups	xmm3,XMMWORD[16+rdi]
+	movups	xmm4,XMMWORD[32+rdi]
+	lea	rdi,[48+rdi]
 	xorps	xmm2,xmm10
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
@@ -1978,20 +1978,20 @@
 	movdqa	xmm10,xmm13
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	lea	rsi,QWORD PTR[48+rsi]
-	jmp	$L$xts_enc_done
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	lea	rsi,[48+rsi]
+	jmp	NEAR $L$xts_enc_done
 
 ALIGN	16
-$L$xts_enc_four::
-	movups	xmm2,XMMWORD PTR[rdi]
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	movups	xmm4,XMMWORD PTR[32+rdi]
+$L$xts_enc_four:
+	movups	xmm2,XMMWORD[rdi]
+	movups	xmm3,XMMWORD[16+rdi]
+	movups	xmm4,XMMWORD[32+rdi]
 	xorps	xmm2,xmm10
-	movups	xmm5,XMMWORD PTR[48+rdi]
-	lea	rdi,QWORD PTR[64+rdi]
+	movups	xmm5,XMMWORD[48+rdi]
+	lea	rdi,[64+rdi]
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
 	xorps	xmm5,xmm13
@@ -2002,114 +2002,113 @@
 	movdqa	xmm10,xmm14
 	pxor	xmm3,xmm11
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[16+rsi],xmm3
-	movdqu	XMMWORD PTR[32+rsi],xmm4
-	movdqu	XMMWORD PTR[48+rsi],xmm5
-	lea	rsi,QWORD PTR[64+rsi]
-	jmp	$L$xts_enc_done
+	movdqu	XMMWORD[16+rsi],xmm3
+	movdqu	XMMWORD[32+rsi],xmm4
+	movdqu	XMMWORD[48+rsi],xmm5
+	lea	rsi,[64+rsi]
+	jmp	NEAR $L$xts_enc_done
 
 ALIGN	16
-$L$xts_enc_done::
+$L$xts_enc_done:
 	and	r9,15
-	jz	$L$xts_enc_ret
+	jz	NEAR $L$xts_enc_ret
 	mov	rdx,r9
 
-$L$xts_enc_steal::
-	movzx	eax,BYTE PTR[rdi]
-	movzx	ecx,BYTE PTR[((-16))+rsi]
-	lea	rdi,QWORD PTR[1+rdi]
-	mov	BYTE PTR[((-16))+rsi],al
-	mov	BYTE PTR[rsi],cl
-	lea	rsi,QWORD PTR[1+rsi]
+$L$xts_enc_steal:
+	movzx	eax,BYTE[rdi]
+	movzx	ecx,BYTE[((-16))+rsi]
+	lea	rdi,[1+rdi]
+	mov	BYTE[((-16))+rsi],al
+	mov	BYTE[rsi],cl
+	lea	rsi,[1+rsi]
 	sub	rdx,1
-	jnz	$L$xts_enc_steal
+	jnz	NEAR $L$xts_enc_steal
 
 	sub	rsi,r9
 	mov	rcx,r11
 	mov	eax,r10d
 
-	movups	xmm2,XMMWORD PTR[((-16))+rsi]
+	movups	xmm2,XMMWORD[((-16))+rsi]
 	xorps	xmm2,xmm10
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_enc1_10::
+$L$oop_enc1_10:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_enc1_10
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_enc1_10
 DB	102,15,56,221,209
 	xorps	xmm2,xmm10
-	movups	XMMWORD PTR[(-16)+rsi],xmm2
+	movups	XMMWORD[(-16)+rsi],xmm2
 
-$L$xts_enc_ret::
-	movaps	xmm6,XMMWORD PTR[((-160))+rbp]
-	movaps	xmm7,XMMWORD PTR[((-144))+rbp]
-	movaps	xmm8,XMMWORD PTR[((-128))+rbp]
-	movaps	xmm9,XMMWORD PTR[((-112))+rbp]
-	movaps	xmm10,XMMWORD PTR[((-96))+rbp]
-	movaps	xmm11,XMMWORD PTR[((-80))+rbp]
-	movaps	xmm12,XMMWORD PTR[((-64))+rbp]
-	movaps	xmm13,XMMWORD PTR[((-48))+rbp]
-	movaps	xmm14,XMMWORD PTR[((-32))+rbp]
-	movaps	xmm15,XMMWORD PTR[((-16))+rbp]
-	lea	rsp,QWORD PTR[rbp]
+$L$xts_enc_ret:
+	movaps	xmm6,XMMWORD[((-160))+rbp]
+	movaps	xmm7,XMMWORD[((-144))+rbp]
+	movaps	xmm8,XMMWORD[((-128))+rbp]
+	movaps	xmm9,XMMWORD[((-112))+rbp]
+	movaps	xmm10,XMMWORD[((-96))+rbp]
+	movaps	xmm11,XMMWORD[((-80))+rbp]
+	movaps	xmm12,XMMWORD[((-64))+rbp]
+	movaps	xmm13,XMMWORD[((-48))+rbp]
+	movaps	xmm14,XMMWORD[((-32))+rbp]
+	movaps	xmm15,XMMWORD[((-16))+rbp]
+	lea	rsp,[rbp]
 	pop	rbp
-$L$xts_enc_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$xts_enc_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_xts_encrypt::
-aesni_xts_encrypt	ENDP
-PUBLIC	aesni_xts_decrypt
+$L$SEH_end_aesni_xts_encrypt:
+global	aesni_xts_decrypt
 
 ALIGN	16
-aesni_xts_decrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_xts_decrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_xts_decrypt::
+$L$SEH_begin_aesni_xts_decrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-	lea	rax,QWORD PTR[rsp]
+	lea	rax,[rsp]
 	push	rbp
 	sub	rsp,272
 	and	rsp,-16
-	movaps	XMMWORD PTR[(-168)+rax],xmm6
-	movaps	XMMWORD PTR[(-152)+rax],xmm7
-	movaps	XMMWORD PTR[(-136)+rax],xmm8
-	movaps	XMMWORD PTR[(-120)+rax],xmm9
-	movaps	XMMWORD PTR[(-104)+rax],xmm10
-	movaps	XMMWORD PTR[(-88)+rax],xmm11
-	movaps	XMMWORD PTR[(-72)+rax],xmm12
-	movaps	XMMWORD PTR[(-56)+rax],xmm13
-	movaps	XMMWORD PTR[(-40)+rax],xmm14
-	movaps	XMMWORD PTR[(-24)+rax],xmm15
-$L$xts_dec_body::
-	lea	rbp,QWORD PTR[((-8))+rax]
-	movups	xmm2,XMMWORD PTR[r9]
-	mov	eax,DWORD PTR[240+r8]
-	mov	r10d,DWORD PTR[240+rcx]
-	movups	xmm0,XMMWORD PTR[r8]
-	movups	xmm1,XMMWORD PTR[16+r8]
-	lea	r8,QWORD PTR[32+r8]
+	movaps	XMMWORD[(-168)+rax],xmm6
+	movaps	XMMWORD[(-152)+rax],xmm7
+	movaps	XMMWORD[(-136)+rax],xmm8
+	movaps	XMMWORD[(-120)+rax],xmm9
+	movaps	XMMWORD[(-104)+rax],xmm10
+	movaps	XMMWORD[(-88)+rax],xmm11
+	movaps	XMMWORD[(-72)+rax],xmm12
+	movaps	XMMWORD[(-56)+rax],xmm13
+	movaps	XMMWORD[(-40)+rax],xmm14
+	movaps	XMMWORD[(-24)+rax],xmm15
+$L$xts_dec_body:
+	lea	rbp,[((-8))+rax]
+	movups	xmm2,XMMWORD[r9]
+	mov	eax,DWORD[240+r8]
+	mov	r10d,DWORD[240+rcx]
+	movups	xmm0,XMMWORD[r8]
+	movups	xmm1,XMMWORD[16+r8]
+	lea	r8,[32+r8]
 	xorps	xmm2,xmm0
-$L$oop_enc1_11::
+$L$oop_enc1_11:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[r8]
-	lea	r8,QWORD PTR[16+r8]
-	jnz	$L$oop_enc1_11
+	movups	xmm1,XMMWORD[r8]
+	lea	r8,[16+r8]
+	jnz	NEAR $L$oop_enc1_11
 DB	102,15,56,221,209
 	xor	eax,eax
 	test	rdx,15
@@ -2117,18 +2116,18 @@
 	shl	rax,4
 	sub	rdx,rax
 
-	movups	xmm0,XMMWORD PTR[rcx]
+	movups	xmm0,XMMWORD[rcx]
 	mov	r11,rcx
 	mov	eax,r10d
 	shl	r10d,4
 	mov	r9,rdx
 	and	rdx,-16
 
-	movups	xmm1,XMMWORD PTR[16+r10*1+rcx]
+	movups	xmm1,XMMWORD[16+r10*1+rcx]
 
-	movdqa	xmm8,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm8,XMMWORD[$L$xts_magic]
 	movdqa	xmm15,xmm2
-	pshufd	xmm9,xmm2,05fh
+	pshufd	xmm9,xmm2,0x5f
 	pxor	xmm1,xmm0
 	movdqa	xmm14,xmm9
 	paddd	xmm9,xmm9
@@ -2168,76 +2167,76 @@
 	pand	xmm9,xmm8
 	pxor	xmm14,xmm0
 	pxor	xmm15,xmm9
-	movaps	XMMWORD PTR[96+rsp],xmm1
+	movaps	XMMWORD[96+rsp],xmm1
 
 	sub	rdx,16*6
-	jc	$L$xts_dec_short
+	jc	NEAR $L$xts_dec_short
 
 	mov	eax,16+96
-	lea	rcx,QWORD PTR[32+r10*1+r11]
+	lea	rcx,[32+r10*1+r11]
 	sub	rax,r10
-	movups	xmm1,XMMWORD PTR[16+r11]
+	movups	xmm1,XMMWORD[16+r11]
 	mov	r10,rax
-	lea	r8,QWORD PTR[$L$xts_magic]
-	jmp	$L$xts_dec_grandloop
+	lea	r8,[$L$xts_magic]
+	jmp	NEAR $L$xts_dec_grandloop
 
 ALIGN	32
-$L$xts_dec_grandloop::
-	movdqu	xmm2,XMMWORD PTR[rdi]
+$L$xts_dec_grandloop:
+	movdqu	xmm2,XMMWORD[rdi]
 	movdqa	xmm8,xmm0
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
 	pxor	xmm2,xmm10
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
 	pxor	xmm3,xmm11
 DB	102,15,56,222,209
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
 	pxor	xmm4,xmm12
 DB	102,15,56,222,217
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
 	pxor	xmm5,xmm13
 DB	102,15,56,222,225
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
+	movdqu	xmm7,XMMWORD[80+rdi]
 	pxor	xmm8,xmm15
-	movdqa	xmm9,XMMWORD PTR[96+rsp]
+	movdqa	xmm9,XMMWORD[96+rsp]
 	pxor	xmm6,xmm14
 DB	102,15,56,222,233
-	movups	xmm0,XMMWORD PTR[32+r11]
-	lea	rdi,QWORD PTR[96+rdi]
+	movups	xmm0,XMMWORD[32+r11]
+	lea	rdi,[96+rdi]
 	pxor	xmm7,xmm8
 
 	pxor	xmm10,xmm9
 DB	102,15,56,222,241
 	pxor	xmm11,xmm9
-	movdqa	XMMWORD PTR[rsp],xmm10
+	movdqa	XMMWORD[rsp],xmm10
 DB	102,15,56,222,249
-	movups	xmm1,XMMWORD PTR[48+r11]
+	movups	xmm1,XMMWORD[48+r11]
 	pxor	xmm12,xmm9
 
 DB	102,15,56,222,208
 	pxor	xmm13,xmm9
-	movdqa	XMMWORD PTR[16+rsp],xmm11
+	movdqa	XMMWORD[16+rsp],xmm11
 DB	102,15,56,222,216
 	pxor	xmm14,xmm9
-	movdqa	XMMWORD PTR[32+rsp],xmm12
+	movdqa	XMMWORD[32+rsp],xmm12
 DB	102,15,56,222,224
 DB	102,15,56,222,232
 	pxor	xmm8,xmm9
-	movdqa	XMMWORD PTR[64+rsp],xmm14
+	movdqa	XMMWORD[64+rsp],xmm14
 DB	102,15,56,222,240
 DB	102,15,56,222,248
-	movups	xmm0,XMMWORD PTR[64+r11]
-	movdqa	XMMWORD PTR[80+rsp],xmm8
-	pshufd	xmm9,xmm15,05fh
-	jmp	$L$xts_dec_loop6
+	movups	xmm0,XMMWORD[64+r11]
+	movdqa	XMMWORD[80+rsp],xmm8
+	pshufd	xmm9,xmm15,0x5f
+	jmp	NEAR $L$xts_dec_loop6
 ALIGN	32
-$L$xts_dec_loop6::
+$L$xts_dec_loop6:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
 DB	102,15,56,222,233
 DB	102,15,56,222,241
 DB	102,15,56,222,249
-	movups	xmm1,XMMWORD PTR[((-64))+rax*1+rcx]
+	movups	xmm1,XMMWORD[((-64))+rax*1+rcx]
 	add	rax,32
 
 DB	102,15,56,222,208
@@ -2246,10 +2245,10 @@
 DB	102,15,56,222,232
 DB	102,15,56,222,240
 DB	102,15,56,222,248
-	movups	xmm0,XMMWORD PTR[((-80))+rax*1+rcx]
-	jnz	$L$xts_dec_loop6
+	movups	xmm0,XMMWORD[((-80))+rax*1+rcx]
+	jnz	NEAR $L$xts_dec_loop6
 
-	movdqa	xmm8,XMMWORD PTR[r8]
+	movdqa	xmm8,XMMWORD[r8]
 	movdqa	xmm14,xmm9
 	paddd	xmm9,xmm9
 DB	102,15,56,222,209
@@ -2257,14 +2256,14 @@
 	psrad	xmm14,31
 DB	102,15,56,222,217
 	pand	xmm14,xmm8
-	movups	xmm10,XMMWORD PTR[r11]
+	movups	xmm10,XMMWORD[r11]
 DB	102,15,56,222,225
 DB	102,15,56,222,233
 DB	102,15,56,222,241
 	pxor	xmm15,xmm14
 	movaps	xmm11,xmm10
 DB	102,15,56,222,249
-	movups	xmm1,XMMWORD PTR[((-64))+rcx]
+	movups	xmm1,XMMWORD[((-64))+rcx]
 
 	movdqa	xmm14,xmm9
 DB	102,15,56,222,208
@@ -2281,7 +2280,7 @@
 	pxor	xmm15,xmm14
 	movdqa	xmm14,xmm9
 DB	102,15,56,222,248
-	movups	xmm0,XMMWORD PTR[((-48))+rcx]
+	movups	xmm0,XMMWORD[((-48))+rcx]
 
 	paddd	xmm9,xmm9
 DB	102,15,56,222,209
@@ -2292,13 +2291,13 @@
 	pand	xmm14,xmm8
 DB	102,15,56,222,225
 DB	102,15,56,222,233
-	movdqa	XMMWORD PTR[48+rsp],xmm13
+	movdqa	XMMWORD[48+rsp],xmm13
 	pxor	xmm15,xmm14
 DB	102,15,56,222,241
 	movaps	xmm13,xmm12
 	movdqa	xmm14,xmm9
 DB	102,15,56,222,249
-	movups	xmm1,XMMWORD PTR[((-32))+rcx]
+	movups	xmm1,XMMWORD[((-32))+rcx]
 
 	paddd	xmm9,xmm9
 DB	102,15,56,222,208
@@ -2325,10 +2324,10 @@
 DB	102,15,56,222,225
 DB	102,15,56,222,233
 	pxor	xmm15,xmm0
-	movups	xmm0,XMMWORD PTR[r11]
+	movups	xmm0,XMMWORD[r11]
 DB	102,15,56,222,241
 DB	102,15,56,222,249
-	movups	xmm1,XMMWORD PTR[16+r11]
+	movups	xmm1,XMMWORD[16+r11]
 
 	pxor	xmm14,xmm15
 DB	102,15,56,223,84,36,0
@@ -2343,47 +2342,47 @@
 DB	102,15,56,223,124,36,80
 	pxor	xmm15,xmm9
 
-	lea	rsi,QWORD PTR[96+rsi]
-	movups	XMMWORD PTR[(-96)+rsi],xmm2
-	movups	XMMWORD PTR[(-80)+rsi],xmm3
-	movups	XMMWORD PTR[(-64)+rsi],xmm4
-	movups	XMMWORD PTR[(-48)+rsi],xmm5
-	movups	XMMWORD PTR[(-32)+rsi],xmm6
-	movups	XMMWORD PTR[(-16)+rsi],xmm7
+	lea	rsi,[96+rsi]
+	movups	XMMWORD[(-96)+rsi],xmm2
+	movups	XMMWORD[(-80)+rsi],xmm3
+	movups	XMMWORD[(-64)+rsi],xmm4
+	movups	XMMWORD[(-48)+rsi],xmm5
+	movups	XMMWORD[(-32)+rsi],xmm6
+	movups	XMMWORD[(-16)+rsi],xmm7
 	sub	rdx,16*6
-	jnc	$L$xts_dec_grandloop
+	jnc	NEAR $L$xts_dec_grandloop
 
 	mov	eax,16+96
 	sub	eax,r10d
 	mov	rcx,r11
 	shr	eax,4
 
-$L$xts_dec_short::
+$L$xts_dec_short:
 	mov	r10d,eax
 	pxor	xmm10,xmm0
 	pxor	xmm11,xmm0
 	add	rdx,16*6
-	jz	$L$xts_dec_done
+	jz	NEAR $L$xts_dec_done
 
 	pxor	xmm12,xmm0
-	cmp	rdx,020h
-	jb	$L$xts_dec_one
+	cmp	rdx,0x20
+	jb	NEAR $L$xts_dec_one
 	pxor	xmm13,xmm0
-	je	$L$xts_dec_two
+	je	NEAR $L$xts_dec_two
 
 	pxor	xmm14,xmm0
-	cmp	rdx,040h
-	jb	$L$xts_dec_three
-	je	$L$xts_dec_four
+	cmp	rdx,0x40
+	jb	NEAR $L$xts_dec_three
+	je	NEAR $L$xts_dec_four
 
-	movdqu	xmm2,XMMWORD PTR[rdi]
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
+	movdqu	xmm2,XMMWORD[rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
 	pxor	xmm2,xmm10
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
 	pxor	xmm3,xmm11
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
-	lea	rdi,QWORD PTR[80+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
+	lea	rdi,[80+rdi]
 	pxor	xmm4,xmm12
 	pxor	xmm5,xmm13
 	pxor	xmm6,xmm14
@@ -2393,54 +2392,54 @@
 	xorps	xmm2,xmm10
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	xorps	xmm5,xmm13
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	xorps	xmm6,xmm14
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm14,xmm14
-	movdqu	XMMWORD PTR[48+rsi],xmm5
+	movdqu	XMMWORD[48+rsi],xmm5
 	pcmpgtd	xmm14,xmm15
-	movdqu	XMMWORD PTR[64+rsi],xmm6
-	lea	rsi,QWORD PTR[80+rsi]
-	pshufd	xmm11,xmm14,013h
+	movdqu	XMMWORD[64+rsi],xmm6
+	lea	rsi,[80+rsi]
+	pshufd	xmm11,xmm14,0x13
 	and	r9,15
-	jz	$L$xts_dec_ret
+	jz	NEAR $L$xts_dec_ret
 
 	movdqa	xmm10,xmm15
 	paddq	xmm15,xmm15
 	pand	xmm11,xmm8
 	pxor	xmm11,xmm15
-	jmp	$L$xts_dec_done2
+	jmp	NEAR $L$xts_dec_done2
 
 ALIGN	16
-$L$xts_dec_one::
-	movups	xmm2,XMMWORD PTR[rdi]
-	lea	rdi,QWORD PTR[16+rdi]
+$L$xts_dec_one:
+	movups	xmm2,XMMWORD[rdi]
+	lea	rdi,[16+rdi]
 	xorps	xmm2,xmm10
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_dec1_12::
+$L$oop_dec1_12:
 DB	102,15,56,222,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_dec1_12
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_dec1_12
 DB	102,15,56,223,209
 	xorps	xmm2,xmm10
 	movdqa	xmm10,xmm11
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	movdqa	xmm11,xmm12
-	lea	rsi,QWORD PTR[16+rsi]
-	jmp	$L$xts_dec_done
+	lea	rsi,[16+rsi]
+	jmp	NEAR $L$xts_dec_done
 
 ALIGN	16
-$L$xts_dec_two::
-	movups	xmm2,XMMWORD PTR[rdi]
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	lea	rdi,QWORD PTR[32+rdi]
+$L$xts_dec_two:
+	movups	xmm2,XMMWORD[rdi]
+	movups	xmm3,XMMWORD[16+rdi]
+	lea	rdi,[32+rdi]
 	xorps	xmm2,xmm10
 	xorps	xmm3,xmm11
 
@@ -2450,17 +2449,17 @@
 	movdqa	xmm10,xmm12
 	xorps	xmm3,xmm11
 	movdqa	xmm11,xmm13
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	lea	rsi,QWORD PTR[32+rsi]
-	jmp	$L$xts_dec_done
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	lea	rsi,[32+rsi]
+	jmp	NEAR $L$xts_dec_done
 
 ALIGN	16
-$L$xts_dec_three::
-	movups	xmm2,XMMWORD PTR[rdi]
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	movups	xmm4,XMMWORD PTR[32+rdi]
-	lea	rdi,QWORD PTR[48+rdi]
+$L$xts_dec_three:
+	movups	xmm2,XMMWORD[rdi]
+	movups	xmm3,XMMWORD[16+rdi]
+	movups	xmm4,XMMWORD[32+rdi]
+	lea	rdi,[48+rdi]
 	xorps	xmm2,xmm10
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
@@ -2472,20 +2471,20 @@
 	xorps	xmm3,xmm11
 	movdqa	xmm11,xmm14
 	xorps	xmm4,xmm12
-	movups	XMMWORD PTR[rsi],xmm2
-	movups	XMMWORD PTR[16+rsi],xmm3
-	movups	XMMWORD PTR[32+rsi],xmm4
-	lea	rsi,QWORD PTR[48+rsi]
-	jmp	$L$xts_dec_done
+	movups	XMMWORD[rsi],xmm2
+	movups	XMMWORD[16+rsi],xmm3
+	movups	XMMWORD[32+rsi],xmm4
+	lea	rsi,[48+rsi]
+	jmp	NEAR $L$xts_dec_done
 
 ALIGN	16
-$L$xts_dec_four::
-	movups	xmm2,XMMWORD PTR[rdi]
-	movups	xmm3,XMMWORD PTR[16+rdi]
-	movups	xmm4,XMMWORD PTR[32+rdi]
+$L$xts_dec_four:
+	movups	xmm2,XMMWORD[rdi]
+	movups	xmm3,XMMWORD[16+rdi]
+	movups	xmm4,XMMWORD[32+rdi]
 	xorps	xmm2,xmm10
-	movups	xmm5,XMMWORD PTR[48+rdi]
-	lea	rdi,QWORD PTR[64+rdi]
+	movups	xmm5,XMMWORD[48+rdi]
+	lea	rdi,[64+rdi]
 	xorps	xmm3,xmm11
 	xorps	xmm4,xmm12
 	xorps	xmm5,xmm13
@@ -2497,220 +2496,219 @@
 	pxor	xmm3,xmm11
 	movdqa	xmm11,xmm15
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[16+rsi],xmm3
-	movdqu	XMMWORD PTR[32+rsi],xmm4
-	movdqu	XMMWORD PTR[48+rsi],xmm5
-	lea	rsi,QWORD PTR[64+rsi]
-	jmp	$L$xts_dec_done
+	movdqu	XMMWORD[16+rsi],xmm3
+	movdqu	XMMWORD[32+rsi],xmm4
+	movdqu	XMMWORD[48+rsi],xmm5
+	lea	rsi,[64+rsi]
+	jmp	NEAR $L$xts_dec_done
 
 ALIGN	16
-$L$xts_dec_done::
+$L$xts_dec_done:
 	and	r9,15
-	jz	$L$xts_dec_ret
-$L$xts_dec_done2::
+	jz	NEAR $L$xts_dec_ret
+$L$xts_dec_done2:
 	mov	rdx,r9
 	mov	rcx,r11
 	mov	eax,r10d
 
-	movups	xmm2,XMMWORD PTR[rdi]
+	movups	xmm2,XMMWORD[rdi]
 	xorps	xmm2,xmm11
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_dec1_13::
+$L$oop_dec1_13:
 DB	102,15,56,222,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_dec1_13
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_dec1_13
 DB	102,15,56,223,209
 	xorps	xmm2,xmm11
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 
-$L$xts_dec_steal::
-	movzx	eax,BYTE PTR[16+rdi]
-	movzx	ecx,BYTE PTR[rsi]
-	lea	rdi,QWORD PTR[1+rdi]
-	mov	BYTE PTR[rsi],al
-	mov	BYTE PTR[16+rsi],cl
-	lea	rsi,QWORD PTR[1+rsi]
+$L$xts_dec_steal:
+	movzx	eax,BYTE[16+rdi]
+	movzx	ecx,BYTE[rsi]
+	lea	rdi,[1+rdi]
+	mov	BYTE[rsi],al
+	mov	BYTE[16+rsi],cl
+	lea	rsi,[1+rsi]
 	sub	rdx,1
-	jnz	$L$xts_dec_steal
+	jnz	NEAR $L$xts_dec_steal
 
 	sub	rsi,r9
 	mov	rcx,r11
 	mov	eax,r10d
 
-	movups	xmm2,XMMWORD PTR[rsi]
+	movups	xmm2,XMMWORD[rsi]
 	xorps	xmm2,xmm10
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_dec1_14::
+$L$oop_dec1_14:
 DB	102,15,56,222,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_dec1_14
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_dec1_14
 DB	102,15,56,223,209
 	xorps	xmm2,xmm10
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 
-$L$xts_dec_ret::
-	movaps	xmm6,XMMWORD PTR[((-160))+rbp]
-	movaps	xmm7,XMMWORD PTR[((-144))+rbp]
-	movaps	xmm8,XMMWORD PTR[((-128))+rbp]
-	movaps	xmm9,XMMWORD PTR[((-112))+rbp]
-	movaps	xmm10,XMMWORD PTR[((-96))+rbp]
-	movaps	xmm11,XMMWORD PTR[((-80))+rbp]
-	movaps	xmm12,XMMWORD PTR[((-64))+rbp]
-	movaps	xmm13,XMMWORD PTR[((-48))+rbp]
-	movaps	xmm14,XMMWORD PTR[((-32))+rbp]
-	movaps	xmm15,XMMWORD PTR[((-16))+rbp]
-	lea	rsp,QWORD PTR[rbp]
+$L$xts_dec_ret:
+	movaps	xmm6,XMMWORD[((-160))+rbp]
+	movaps	xmm7,XMMWORD[((-144))+rbp]
+	movaps	xmm8,XMMWORD[((-128))+rbp]
+	movaps	xmm9,XMMWORD[((-112))+rbp]
+	movaps	xmm10,XMMWORD[((-96))+rbp]
+	movaps	xmm11,XMMWORD[((-80))+rbp]
+	movaps	xmm12,XMMWORD[((-64))+rbp]
+	movaps	xmm13,XMMWORD[((-48))+rbp]
+	movaps	xmm14,XMMWORD[((-32))+rbp]
+	movaps	xmm15,XMMWORD[((-16))+rbp]
+	lea	rsp,[rbp]
 	pop	rbp
-$L$xts_dec_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$xts_dec_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_xts_decrypt::
-aesni_xts_decrypt	ENDP
-PUBLIC	aesni_cbc_encrypt
+$L$SEH_end_aesni_xts_decrypt:
+global	aesni_cbc_encrypt
 
 ALIGN	16
-aesni_cbc_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+aesni_cbc_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_aesni_cbc_encrypt::
+$L$SEH_begin_aesni_cbc_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	test	rdx,rdx
-	jz	$L$cbc_ret
+	jz	NEAR $L$cbc_ret
 
-	mov	r10d,DWORD PTR[240+rcx]
+	mov	r10d,DWORD[240+rcx]
 	mov	r11,rcx
 	test	r9d,r9d
-	jz	$L$cbc_decrypt
+	jz	NEAR $L$cbc_decrypt
 
-	movups	xmm2,XMMWORD PTR[r8]
+	movups	xmm2,XMMWORD[r8]
 	mov	eax,r10d
 	cmp	rdx,16
-	jb	$L$cbc_enc_tail
+	jb	NEAR $L$cbc_enc_tail
 	sub	rdx,16
-	jmp	$L$cbc_enc_loop
+	jmp	NEAR $L$cbc_enc_loop
 ALIGN	16
-$L$cbc_enc_loop::
-	movups	xmm3,XMMWORD PTR[rdi]
-	lea	rdi,QWORD PTR[16+rdi]
+$L$cbc_enc_loop:
+	movups	xmm3,XMMWORD[rdi]
+	lea	rdi,[16+rdi]
 
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
 	xorps	xmm3,xmm0
-	lea	rcx,QWORD PTR[32+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm3
-$L$oop_enc1_15::
+$L$oop_enc1_15:
 DB	102,15,56,220,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_enc1_15
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_enc1_15
 DB	102,15,56,221,209
 	mov	eax,r10d
 	mov	rcx,r11
-	movups	XMMWORD PTR[rsi],xmm2
-	lea	rsi,QWORD PTR[16+rsi]
+	movups	XMMWORD[rsi],xmm2
+	lea	rsi,[16+rsi]
 	sub	rdx,16
-	jnc	$L$cbc_enc_loop
+	jnc	NEAR $L$cbc_enc_loop
 	add	rdx,16
-	jnz	$L$cbc_enc_tail
-	movups	XMMWORD PTR[r8],xmm2
-	jmp	$L$cbc_ret
+	jnz	NEAR $L$cbc_enc_tail
+	movups	XMMWORD[r8],xmm2
+	jmp	NEAR $L$cbc_ret
 
-$L$cbc_enc_tail::
+$L$cbc_enc_tail:
 	mov	rcx,rdx
 	xchg	rsi,rdi
-	DD	09066A4F3h
+	DD	0x9066A4F3
 	mov	ecx,16
 	sub	rcx,rdx
 	xor	eax,eax
-	DD	09066AAF3h
-	lea	rdi,QWORD PTR[((-16))+rdi]
+	DD	0x9066AAF3
+	lea	rdi,[((-16))+rdi]
 	mov	eax,r10d
 	mov	rsi,rdi
 	mov	rcx,r11
 	xor	rdx,rdx
-	jmp	$L$cbc_enc_loop
+	jmp	NEAR $L$cbc_enc_loop
 
 ALIGN	16
-$L$cbc_decrypt::
-	lea	rax,QWORD PTR[rsp]
+$L$cbc_decrypt:
+	lea	rax,[rsp]
 	push	rbp
 	sub	rsp,176
 	and	rsp,-16
-	movaps	XMMWORD PTR[16+rsp],xmm6
-	movaps	XMMWORD PTR[32+rsp],xmm7
-	movaps	XMMWORD PTR[48+rsp],xmm8
-	movaps	XMMWORD PTR[64+rsp],xmm9
-	movaps	XMMWORD PTR[80+rsp],xmm10
-	movaps	XMMWORD PTR[96+rsp],xmm11
-	movaps	XMMWORD PTR[112+rsp],xmm12
-	movaps	XMMWORD PTR[128+rsp],xmm13
-	movaps	XMMWORD PTR[144+rsp],xmm14
-	movaps	XMMWORD PTR[160+rsp],xmm15
-$L$cbc_decrypt_body::
-	lea	rbp,QWORD PTR[((-8))+rax]
-	movups	xmm10,XMMWORD PTR[r8]
+	movaps	XMMWORD[16+rsp],xmm6
+	movaps	XMMWORD[32+rsp],xmm7
+	movaps	XMMWORD[48+rsp],xmm8
+	movaps	XMMWORD[64+rsp],xmm9
+	movaps	XMMWORD[80+rsp],xmm10
+	movaps	XMMWORD[96+rsp],xmm11
+	movaps	XMMWORD[112+rsp],xmm12
+	movaps	XMMWORD[128+rsp],xmm13
+	movaps	XMMWORD[144+rsp],xmm14
+	movaps	XMMWORD[160+rsp],xmm15
+$L$cbc_decrypt_body:
+	lea	rbp,[((-8))+rax]
+	movups	xmm10,XMMWORD[r8]
 	mov	eax,r10d
-	cmp	rdx,050h
-	jbe	$L$cbc_dec_tail
+	cmp	rdx,0x50
+	jbe	NEAR $L$cbc_dec_tail
 
-	movups	xmm0,XMMWORD PTR[rcx]
-	movdqu	xmm2,XMMWORD PTR[rdi]
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
+	movups	xmm0,XMMWORD[rcx]
+	movdqu	xmm2,XMMWORD[rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
 	movdqa	xmm11,xmm2
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
 	movdqa	xmm12,xmm3
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
 	movdqa	xmm13,xmm4
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
 	movdqa	xmm14,xmm5
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
+	movdqu	xmm7,XMMWORD[80+rdi]
 	movdqa	xmm15,xmm6
-	mov	r9d,DWORD PTR[((OPENSSL_ia32cap_P+4))]
-	cmp	rdx,070h
-	jbe	$L$cbc_dec_six_or_seven
+	mov	r9d,DWORD[((OPENSSL_ia32cap_P+4))]
+	cmp	rdx,0x70
+	jbe	NEAR $L$cbc_dec_six_or_seven
 
 	and	r9d,71303168
-	sub	rdx,050h
+	sub	rdx,0x50
 	cmp	r9d,4194304
-	je	$L$cbc_dec_loop6_enter
-	sub	rdx,020h
-	lea	rcx,QWORD PTR[112+rcx]
-	jmp	$L$cbc_dec_loop8_enter
+	je	NEAR $L$cbc_dec_loop6_enter
+	sub	rdx,0x20
+	lea	rcx,[112+rcx]
+	jmp	NEAR $L$cbc_dec_loop8_enter
 ALIGN	16
-$L$cbc_dec_loop8::
-	movups	XMMWORD PTR[rsi],xmm9
-	lea	rsi,QWORD PTR[16+rsi]
-$L$cbc_dec_loop8_enter::
-	movdqu	xmm8,XMMWORD PTR[96+rdi]
+$L$cbc_dec_loop8:
+	movups	XMMWORD[rsi],xmm9
+	lea	rsi,[16+rsi]
+$L$cbc_dec_loop8_enter:
+	movdqu	xmm8,XMMWORD[96+rdi]
 	pxor	xmm2,xmm0
-	movdqu	xmm9,XMMWORD PTR[112+rdi]
+	movdqu	xmm9,XMMWORD[112+rdi]
 	pxor	xmm3,xmm0
-	movups	xmm1,XMMWORD PTR[((16-112))+rcx]
+	movups	xmm1,XMMWORD[((16-112))+rcx]
 	pxor	xmm4,xmm0
 	xor	r11,r11
-	cmp	rdx,070h
+	cmp	rdx,0x70
 	pxor	xmm5,xmm0
 	pxor	xmm6,xmm0
 	pxor	xmm7,xmm0
@@ -2718,7 +2716,7 @@
 
 DB	102,15,56,222,209
 	pxor	xmm9,xmm0
-	movups	xmm0,XMMWORD PTR[((32-112))+rcx]
+	movups	xmm0,XMMWORD[((32-112))+rcx]
 DB	102,15,56,222,217
 DB	102,15,56,222,225
 DB	102,15,56,222,233
@@ -2729,7 +2727,7 @@
 	shl	r11,7
 DB	102,68,15,56,222,201
 	add	r11,rdi
-	movups	xmm1,XMMWORD PTR[((48-112))+rcx]
+	movups	xmm1,XMMWORD[((48-112))+rcx]
 DB	102,15,56,222,208
 DB	102,15,56,222,216
 DB	102,15,56,222,224
@@ -2738,7 +2736,7 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((64-112))+rcx]
+	movups	xmm0,XMMWORD[((64-112))+rcx]
 	nop
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -2748,7 +2746,7 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movups	xmm1,XMMWORD PTR[((80-112))+rcx]
+	movups	xmm1,XMMWORD[((80-112))+rcx]
 	nop
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -2758,7 +2756,7 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((96-112))+rcx]
+	movups	xmm0,XMMWORD[((96-112))+rcx]
 	nop
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -2768,7 +2766,7 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movups	xmm1,XMMWORD PTR[((112-112))+rcx]
+	movups	xmm1,XMMWORD[((112-112))+rcx]
 	nop
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -2778,7 +2776,7 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((128-112))+rcx]
+	movups	xmm0,XMMWORD[((128-112))+rcx]
 	nop
 DB	102,15,56,222,209
 DB	102,15,56,222,217
@@ -2788,7 +2786,7 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movups	xmm1,XMMWORD PTR[((144-112))+rcx]
+	movups	xmm1,XMMWORD[((144-112))+rcx]
 	cmp	eax,11
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -2798,8 +2796,8 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((160-112))+rcx]
-	jb	$L$cbc_dec_done
+	movups	xmm0,XMMWORD[((160-112))+rcx]
+	jb	NEAR $L$cbc_dec_done
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
@@ -2808,7 +2806,7 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movups	xmm1,XMMWORD PTR[((176-112))+rcx]
+	movups	xmm1,XMMWORD[((176-112))+rcx]
 	nop
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -2818,8 +2816,8 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((192-112))+rcx]
-	je	$L$cbc_dec_done
+	movups	xmm0,XMMWORD[((192-112))+rcx]
+	je	NEAR $L$cbc_dec_done
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 DB	102,15,56,222,225
@@ -2828,7 +2826,7 @@
 DB	102,15,56,222,249
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movups	xmm1,XMMWORD PTR[((208-112))+rcx]
+	movups	xmm1,XMMWORD[((208-112))+rcx]
 	nop
 DB	102,15,56,222,208
 DB	102,15,56,222,216
@@ -2838,10 +2836,10 @@
 DB	102,15,56,222,248
 DB	102,68,15,56,222,192
 DB	102,68,15,56,222,200
-	movups	xmm0,XMMWORD PTR[((224-112))+rcx]
-	jmp	$L$cbc_dec_done
+	movups	xmm0,XMMWORD[((224-112))+rcx]
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_done::
+$L$cbc_dec_done:
 DB	102,15,56,222,209
 DB	102,15,56,222,217
 	pxor	xmm10,xmm0
@@ -2856,121 +2854,121 @@
 	pxor	xmm15,xmm0
 DB	102,68,15,56,222,193
 DB	102,68,15,56,222,201
-	movdqu	xmm1,XMMWORD PTR[80+rdi]
+	movdqu	xmm1,XMMWORD[80+rdi]
 
 DB	102,65,15,56,223,210
-	movdqu	xmm10,XMMWORD PTR[96+rdi]
+	movdqu	xmm10,XMMWORD[96+rdi]
 	pxor	xmm1,xmm0
 DB	102,65,15,56,223,219
 	pxor	xmm10,xmm0
-	movdqu	xmm0,XMMWORD PTR[112+rdi]
+	movdqu	xmm0,XMMWORD[112+rdi]
 DB	102,65,15,56,223,228
-	lea	rdi,QWORD PTR[128+rdi]
-	movdqu	xmm11,XMMWORD PTR[r11]
+	lea	rdi,[128+rdi]
+	movdqu	xmm11,XMMWORD[r11]
 DB	102,65,15,56,223,237
 DB	102,65,15,56,223,246
-	movdqu	xmm12,XMMWORD PTR[16+r11]
-	movdqu	xmm13,XMMWORD PTR[32+r11]
+	movdqu	xmm12,XMMWORD[16+r11]
+	movdqu	xmm13,XMMWORD[32+r11]
 DB	102,65,15,56,223,255
 DB	102,68,15,56,223,193
-	movdqu	xmm14,XMMWORD PTR[48+r11]
-	movdqu	xmm15,XMMWORD PTR[64+r11]
+	movdqu	xmm14,XMMWORD[48+r11]
+	movdqu	xmm15,XMMWORD[64+r11]
 DB	102,69,15,56,223,202
 	movdqa	xmm10,xmm0
-	movdqu	xmm1,XMMWORD PTR[80+r11]
-	movups	xmm0,XMMWORD PTR[((-112))+rcx]
+	movdqu	xmm1,XMMWORD[80+r11]
+	movups	xmm0,XMMWORD[((-112))+rcx]
 
-	movups	XMMWORD PTR[rsi],xmm2
+	movups	XMMWORD[rsi],xmm2
 	movdqa	xmm2,xmm11
-	movups	XMMWORD PTR[16+rsi],xmm3
+	movups	XMMWORD[16+rsi],xmm3
 	movdqa	xmm3,xmm12
-	movups	XMMWORD PTR[32+rsi],xmm4
+	movups	XMMWORD[32+rsi],xmm4
 	movdqa	xmm4,xmm13
-	movups	XMMWORD PTR[48+rsi],xmm5
+	movups	XMMWORD[48+rsi],xmm5
 	movdqa	xmm5,xmm14
-	movups	XMMWORD PTR[64+rsi],xmm6
+	movups	XMMWORD[64+rsi],xmm6
 	movdqa	xmm6,xmm15
-	movups	XMMWORD PTR[80+rsi],xmm7
+	movups	XMMWORD[80+rsi],xmm7
 	movdqa	xmm7,xmm1
-	movups	XMMWORD PTR[96+rsi],xmm8
-	lea	rsi,QWORD PTR[112+rsi]
+	movups	XMMWORD[96+rsi],xmm8
+	lea	rsi,[112+rsi]
 
-	sub	rdx,080h
-	ja	$L$cbc_dec_loop8
+	sub	rdx,0x80
+	ja	NEAR $L$cbc_dec_loop8
 
 	movaps	xmm2,xmm9
-	lea	rcx,QWORD PTR[((-112))+rcx]
-	add	rdx,070h
-	jle	$L$cbc_dec_tail_collected
-	movups	XMMWORD PTR[rsi],xmm9
-	lea	rsi,QWORD PTR[16+rsi]
-	cmp	rdx,050h
-	jbe	$L$cbc_dec_tail
+	lea	rcx,[((-112))+rcx]
+	add	rdx,0x70
+	jle	NEAR $L$cbc_dec_tail_collected
+	movups	XMMWORD[rsi],xmm9
+	lea	rsi,[16+rsi]
+	cmp	rdx,0x50
+	jbe	NEAR $L$cbc_dec_tail
 
 	movaps	xmm2,xmm11
-$L$cbc_dec_six_or_seven::
-	cmp	rdx,060h
-	ja	$L$cbc_dec_seven
+$L$cbc_dec_six_or_seven:
+	cmp	rdx,0x60
+	ja	NEAR $L$cbc_dec_seven
 
 	movaps	xmm8,xmm7
 	call	_aesni_decrypt6
 	pxor	xmm2,xmm10
 	movaps	xmm10,xmm8
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm6,xmm14
-	movdqu	XMMWORD PTR[48+rsi],xmm5
+	movdqu	XMMWORD[48+rsi],xmm5
 	pxor	xmm7,xmm15
-	movdqu	XMMWORD PTR[64+rsi],xmm6
-	lea	rsi,QWORD PTR[80+rsi]
+	movdqu	XMMWORD[64+rsi],xmm6
+	lea	rsi,[80+rsi]
 	movdqa	xmm2,xmm7
-	jmp	$L$cbc_dec_tail_collected
+	jmp	NEAR $L$cbc_dec_tail_collected
 
 ALIGN	16
-$L$cbc_dec_seven::
-	movups	xmm8,XMMWORD PTR[96+rdi]
+$L$cbc_dec_seven:
+	movups	xmm8,XMMWORD[96+rdi]
 	xorps	xmm9,xmm9
 	call	_aesni_decrypt8
-	movups	xmm9,XMMWORD PTR[80+rdi]
+	movups	xmm9,XMMWORD[80+rdi]
 	pxor	xmm2,xmm10
-	movups	xmm10,XMMWORD PTR[96+rdi]
+	movups	xmm10,XMMWORD[96+rdi]
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm6,xmm14
-	movdqu	XMMWORD PTR[48+rsi],xmm5
+	movdqu	XMMWORD[48+rsi],xmm5
 	pxor	xmm7,xmm15
-	movdqu	XMMWORD PTR[64+rsi],xmm6
+	movdqu	XMMWORD[64+rsi],xmm6
 	pxor	xmm8,xmm9
-	movdqu	XMMWORD PTR[80+rsi],xmm7
-	lea	rsi,QWORD PTR[96+rsi]
+	movdqu	XMMWORD[80+rsi],xmm7
+	lea	rsi,[96+rsi]
 	movdqa	xmm2,xmm8
-	jmp	$L$cbc_dec_tail_collected
+	jmp	NEAR $L$cbc_dec_tail_collected
 
 ALIGN	16
-$L$cbc_dec_loop6::
-	movups	XMMWORD PTR[rsi],xmm7
-	lea	rsi,QWORD PTR[16+rsi]
-	movdqu	xmm2,XMMWORD PTR[rdi]
-	movdqu	xmm3,XMMWORD PTR[16+rdi]
+$L$cbc_dec_loop6:
+	movups	XMMWORD[rsi],xmm7
+	lea	rsi,[16+rsi]
+	movdqu	xmm2,XMMWORD[rdi]
+	movdqu	xmm3,XMMWORD[16+rdi]
 	movdqa	xmm11,xmm2
-	movdqu	xmm4,XMMWORD PTR[32+rdi]
+	movdqu	xmm4,XMMWORD[32+rdi]
 	movdqa	xmm12,xmm3
-	movdqu	xmm5,XMMWORD PTR[48+rdi]
+	movdqu	xmm5,XMMWORD[48+rdi]
 	movdqa	xmm13,xmm4
-	movdqu	xmm6,XMMWORD PTR[64+rdi]
+	movdqu	xmm6,XMMWORD[64+rdi]
 	movdqa	xmm14,xmm5
-	movdqu	xmm7,XMMWORD PTR[80+rdi]
+	movdqu	xmm7,XMMWORD[80+rdi]
 	movdqa	xmm15,xmm6
-$L$cbc_dec_loop6_enter::
-	lea	rdi,QWORD PTR[96+rdi]
+$L$cbc_dec_loop6_enter:
+	lea	rdi,[96+rdi]
 	movdqa	xmm8,xmm7
 
 	call	_aesni_decrypt6
@@ -2978,48 +2976,48 @@
 	pxor	xmm2,xmm10
 	movdqa	xmm10,xmm8
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm6,xmm14
 	mov	rcx,r11
-	movdqu	XMMWORD PTR[48+rsi],xmm5
+	movdqu	XMMWORD[48+rsi],xmm5
 	pxor	xmm7,xmm15
 	mov	eax,r10d
-	movdqu	XMMWORD PTR[64+rsi],xmm6
-	lea	rsi,QWORD PTR[80+rsi]
-	sub	rdx,060h
-	ja	$L$cbc_dec_loop6
+	movdqu	XMMWORD[64+rsi],xmm6
+	lea	rsi,[80+rsi]
+	sub	rdx,0x60
+	ja	NEAR $L$cbc_dec_loop6
 
 	movdqa	xmm2,xmm7
-	add	rdx,050h
-	jle	$L$cbc_dec_tail_collected
-	movups	XMMWORD PTR[rsi],xmm7
-	lea	rsi,QWORD PTR[16+rsi]
+	add	rdx,0x50
+	jle	NEAR $L$cbc_dec_tail_collected
+	movups	XMMWORD[rsi],xmm7
+	lea	rsi,[16+rsi]
 
-$L$cbc_dec_tail::
-	movups	xmm2,XMMWORD PTR[rdi]
-	sub	rdx,010h
-	jbe	$L$cbc_dec_one
+$L$cbc_dec_tail:
+	movups	xmm2,XMMWORD[rdi]
+	sub	rdx,0x10
+	jbe	NEAR $L$cbc_dec_one
 
-	movups	xmm3,XMMWORD PTR[16+rdi]
+	movups	xmm3,XMMWORD[16+rdi]
 	movaps	xmm11,xmm2
-	sub	rdx,010h
-	jbe	$L$cbc_dec_two
+	sub	rdx,0x10
+	jbe	NEAR $L$cbc_dec_two
 
-	movups	xmm4,XMMWORD PTR[32+rdi]
+	movups	xmm4,XMMWORD[32+rdi]
 	movaps	xmm12,xmm3
-	sub	rdx,010h
-	jbe	$L$cbc_dec_three
+	sub	rdx,0x10
+	jbe	NEAR $L$cbc_dec_three
 
-	movups	xmm5,XMMWORD PTR[48+rdi]
+	movups	xmm5,XMMWORD[48+rdi]
 	movaps	xmm13,xmm4
-	sub	rdx,010h
-	jbe	$L$cbc_dec_four
+	sub	rdx,0x10
+	jbe	NEAR $L$cbc_dec_four
 
-	movups	xmm6,XMMWORD PTR[64+rdi]
+	movups	xmm6,XMMWORD[64+rdi]
 	movaps	xmm14,xmm5
 	movaps	xmm15,xmm6
 	xorps	xmm7,xmm7
@@ -3027,173 +3025,172 @@
 	pxor	xmm2,xmm10
 	movaps	xmm10,xmm15
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	pxor	xmm6,xmm14
-	movdqu	XMMWORD PTR[48+rsi],xmm5
-	lea	rsi,QWORD PTR[64+rsi]
+	movdqu	XMMWORD[48+rsi],xmm5
+	lea	rsi,[64+rsi]
 	movdqa	xmm2,xmm6
-	sub	rdx,010h
-	jmp	$L$cbc_dec_tail_collected
+	sub	rdx,0x10
+	jmp	NEAR $L$cbc_dec_tail_collected
 
 ALIGN	16
-$L$cbc_dec_one::
+$L$cbc_dec_one:
 	movaps	xmm11,xmm2
-	movups	xmm0,XMMWORD PTR[rcx]
-	movups	xmm1,XMMWORD PTR[16+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
+	movups	xmm0,XMMWORD[rcx]
+	movups	xmm1,XMMWORD[16+rcx]
+	lea	rcx,[32+rcx]
 	xorps	xmm2,xmm0
-$L$oop_dec1_16::
+$L$oop_dec1_16:
 DB	102,15,56,222,209
 	dec	eax
-	movups	xmm1,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	jnz	$L$oop_dec1_16
+	movups	xmm1,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	jnz	NEAR $L$oop_dec1_16
 DB	102,15,56,223,209
 	xorps	xmm2,xmm10
 	movaps	xmm10,xmm11
-	jmp	$L$cbc_dec_tail_collected
+	jmp	NEAR $L$cbc_dec_tail_collected
 ALIGN	16
-$L$cbc_dec_two::
+$L$cbc_dec_two:
 	movaps	xmm12,xmm3
 	call	_aesni_decrypt2
 	pxor	xmm2,xmm10
 	movaps	xmm10,xmm12
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	movdqa	xmm2,xmm3
-	lea	rsi,QWORD PTR[16+rsi]
-	jmp	$L$cbc_dec_tail_collected
+	lea	rsi,[16+rsi]
+	jmp	NEAR $L$cbc_dec_tail_collected
 ALIGN	16
-$L$cbc_dec_three::
+$L$cbc_dec_three:
 	movaps	xmm13,xmm4
 	call	_aesni_decrypt3
 	pxor	xmm2,xmm10
 	movaps	xmm10,xmm13
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	movdqa	xmm2,xmm4
-	lea	rsi,QWORD PTR[32+rsi]
-	jmp	$L$cbc_dec_tail_collected
+	lea	rsi,[32+rsi]
+	jmp	NEAR $L$cbc_dec_tail_collected
 ALIGN	16
-$L$cbc_dec_four::
+$L$cbc_dec_four:
 	movaps	xmm14,xmm5
 	call	_aesni_decrypt4
 	pxor	xmm2,xmm10
 	movaps	xmm10,xmm14
 	pxor	xmm3,xmm11
-	movdqu	XMMWORD PTR[rsi],xmm2
+	movdqu	XMMWORD[rsi],xmm2
 	pxor	xmm4,xmm12
-	movdqu	XMMWORD PTR[16+rsi],xmm3
+	movdqu	XMMWORD[16+rsi],xmm3
 	pxor	xmm5,xmm13
-	movdqu	XMMWORD PTR[32+rsi],xmm4
+	movdqu	XMMWORD[32+rsi],xmm4
 	movdqa	xmm2,xmm5
-	lea	rsi,QWORD PTR[48+rsi]
-	jmp	$L$cbc_dec_tail_collected
+	lea	rsi,[48+rsi]
+	jmp	NEAR $L$cbc_dec_tail_collected
 
 ALIGN	16
-$L$cbc_dec_tail_collected::
-	movups	XMMWORD PTR[r8],xmm10
+$L$cbc_dec_tail_collected:
+	movups	XMMWORD[r8],xmm10
 	and	rdx,15
-	jnz	$L$cbc_dec_tail_partial
-	movups	XMMWORD PTR[rsi],xmm2
-	jmp	$L$cbc_dec_ret
+	jnz	NEAR $L$cbc_dec_tail_partial
+	movups	XMMWORD[rsi],xmm2
+	jmp	NEAR $L$cbc_dec_ret
 ALIGN	16
-$L$cbc_dec_tail_partial::
-	movaps	XMMWORD PTR[rsp],xmm2
+$L$cbc_dec_tail_partial:
+	movaps	XMMWORD[rsp],xmm2
 	mov	rcx,16
 	mov	rdi,rsi
 	sub	rcx,rdx
-	lea	rsi,QWORD PTR[rsp]
-	DD	09066A4F3h
+	lea	rsi,[rsp]
+	DD	0x9066A4F3
 
-$L$cbc_dec_ret::
-	movaps	xmm6,XMMWORD PTR[16+rsp]
-	movaps	xmm7,XMMWORD PTR[32+rsp]
-	movaps	xmm8,XMMWORD PTR[48+rsp]
-	movaps	xmm9,XMMWORD PTR[64+rsp]
-	movaps	xmm10,XMMWORD PTR[80+rsp]
-	movaps	xmm11,XMMWORD PTR[96+rsp]
-	movaps	xmm12,XMMWORD PTR[112+rsp]
-	movaps	xmm13,XMMWORD PTR[128+rsp]
-	movaps	xmm14,XMMWORD PTR[144+rsp]
-	movaps	xmm15,XMMWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[rbp]
+$L$cbc_dec_ret:
+	movaps	xmm6,XMMWORD[16+rsp]
+	movaps	xmm7,XMMWORD[32+rsp]
+	movaps	xmm8,XMMWORD[48+rsp]
+	movaps	xmm9,XMMWORD[64+rsp]
+	movaps	xmm10,XMMWORD[80+rsp]
+	movaps	xmm11,XMMWORD[96+rsp]
+	movaps	xmm12,XMMWORD[112+rsp]
+	movaps	xmm13,XMMWORD[128+rsp]
+	movaps	xmm14,XMMWORD[144+rsp]
+	movaps	xmm15,XMMWORD[160+rsp]
+	lea	rsp,[rbp]
 	pop	rbp
-$L$cbc_ret::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$cbc_ret:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_aesni_cbc_encrypt::
-aesni_cbc_encrypt	ENDP
-PUBLIC	aesni_set_decrypt_key
+$L$SEH_end_aesni_cbc_encrypt:
+global	aesni_set_decrypt_key
 
 ALIGN	16
-aesni_set_decrypt_key	PROC PUBLIC
-DB	048h,083h,0ECh,008h
+aesni_set_decrypt_key:
+DB	0x48,0x83,0xEC,0x08
 	call	__aesni_set_encrypt_key
 	shl	edx,4
 	test	eax,eax
-	jnz	$L$dec_key_ret
-	lea	rcx,QWORD PTR[16+rdx*1+r8]
+	jnz	NEAR $L$dec_key_ret
+	lea	rcx,[16+rdx*1+r8]
 
-	movups	xmm0,XMMWORD PTR[r8]
-	movups	xmm1,XMMWORD PTR[rcx]
-	movups	XMMWORD PTR[rcx],xmm0
-	movups	XMMWORD PTR[r8],xmm1
-	lea	r8,QWORD PTR[16+r8]
-	lea	rcx,QWORD PTR[((-16))+rcx]
+	movups	xmm0,XMMWORD[r8]
+	movups	xmm1,XMMWORD[rcx]
+	movups	XMMWORD[rcx],xmm0
+	movups	XMMWORD[r8],xmm1
+	lea	r8,[16+r8]
+	lea	rcx,[((-16))+rcx]
 
-$L$dec_key_inverse::
-	movups	xmm0,XMMWORD PTR[r8]
-	movups	xmm1,XMMWORD PTR[rcx]
+$L$dec_key_inverse:
+	movups	xmm0,XMMWORD[r8]
+	movups	xmm1,XMMWORD[rcx]
 DB	102,15,56,219,192
 DB	102,15,56,219,201
-	lea	r8,QWORD PTR[16+r8]
-	lea	rcx,QWORD PTR[((-16))+rcx]
-	movups	XMMWORD PTR[16+rcx],xmm0
-	movups	XMMWORD PTR[(-16)+r8],xmm1
+	lea	r8,[16+r8]
+	lea	rcx,[((-16))+rcx]
+	movups	XMMWORD[16+rcx],xmm0
+	movups	XMMWORD[(-16)+r8],xmm1
 	cmp	rcx,r8
-	ja	$L$dec_key_inverse
+	ja	NEAR $L$dec_key_inverse
 
-	movups	xmm0,XMMWORD PTR[r8]
+	movups	xmm0,XMMWORD[r8]
 DB	102,15,56,219,192
-	movups	XMMWORD PTR[rcx],xmm0
-$L$dec_key_ret::
+	movups	XMMWORD[rcx],xmm0
+$L$dec_key_ret:
 	add	rsp,8
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_set_decrypt_key::
-aesni_set_decrypt_key	ENDP
-PUBLIC	aesni_set_encrypt_key
+$L$SEH_end_set_decrypt_key:
+
+global	aesni_set_encrypt_key
 
 ALIGN	16
-aesni_set_encrypt_key	PROC PUBLIC
-__aesni_set_encrypt_key::
-DB	048h,083h,0ECh,008h
+aesni_set_encrypt_key:
+__aesni_set_encrypt_key:
+DB	0x48,0x83,0xEC,0x08
 	mov	rax,-1
 	test	rcx,rcx
-	jz	$L$enc_key_ret
+	jz	NEAR $L$enc_key_ret
 	test	r8,r8
-	jz	$L$enc_key_ret
+	jz	NEAR $L$enc_key_ret
 
-	movups	xmm0,XMMWORD PTR[rcx]
+	movups	xmm0,XMMWORD[rcx]
 	xorps	xmm4,xmm4
-	lea	rax,QWORD PTR[16+r8]
+	lea	rax,[16+r8]
 	cmp	edx,256
-	je	$L$14rounds
+	je	NEAR $L$14rounds
 	cmp	edx,192
-	je	$L$12rounds
+	je	NEAR $L$12rounds
 	cmp	edx,128
-	jne	$L$bad_keybits
+	jne	NEAR $L$bad_keybits
 
-$L$10rounds::
+$L$10rounds:
 	mov	edx,9
-	movups	XMMWORD PTR[r8],xmm0
+	movups	XMMWORD[r8],xmm0
 DB	102,15,58,223,200,1
 	call	$L$key_expansion_128_cold
 DB	102,15,58,223,200,2
@@ -3214,16 +3211,16 @@
 	call	$L$key_expansion_128
 DB	102,15,58,223,200,54
 	call	$L$key_expansion_128
-	movups	XMMWORD PTR[rax],xmm0
-	mov	DWORD PTR[80+rax],edx
+	movups	XMMWORD[rax],xmm0
+	mov	DWORD[80+rax],edx
 	xor	eax,eax
-	jmp	$L$enc_key_ret
+	jmp	NEAR $L$enc_key_ret
 
 ALIGN	16
-$L$12rounds::
-	movq	xmm2,QWORD PTR[16+rcx]
+$L$12rounds:
+	movq	xmm2,QWORD[16+rcx]
 	mov	edx,11
-	movups	XMMWORD PTR[r8],xmm0
+	movups	XMMWORD[r8],xmm0
 DB	102,15,58,223,202,1
 	call	$L$key_expansion_192a_cold
 DB	102,15,58,223,202,2
@@ -3240,18 +3237,18 @@
 	call	$L$key_expansion_192a
 DB	102,15,58,223,202,128
 	call	$L$key_expansion_192b
-	movups	XMMWORD PTR[rax],xmm0
-	mov	DWORD PTR[48+rax],edx
+	movups	XMMWORD[rax],xmm0
+	mov	DWORD[48+rax],edx
 	xor	rax,rax
-	jmp	$L$enc_key_ret
+	jmp	NEAR $L$enc_key_ret
 
 ALIGN	16
-$L$14rounds::
-	movups	xmm2,XMMWORD PTR[16+rcx]
+$L$14rounds:
+	movups	xmm2,XMMWORD[16+rcx]
 	mov	edx,13
-	lea	rax,QWORD PTR[16+rax]
-	movups	XMMWORD PTR[r8],xmm0
-	movups	XMMWORD PTR[16+r8],xmm2
+	lea	rax,[16+rax]
+	movups	XMMWORD[r8],xmm0
+	movups	XMMWORD[16+r8],xmm2
 DB	102,15,58,223,202,1
 	call	$L$key_expansion_256a_cold
 DB	102,15,58,223,200,1
@@ -3278,24 +3275,24 @@
 	call	$L$key_expansion_256b
 DB	102,15,58,223,202,64
 	call	$L$key_expansion_256a
-	movups	XMMWORD PTR[rax],xmm0
-	mov	DWORD PTR[16+rax],edx
+	movups	XMMWORD[rax],xmm0
+	mov	DWORD[16+rax],edx
 	xor	rax,rax
-	jmp	$L$enc_key_ret
+	jmp	NEAR $L$enc_key_ret
 
 ALIGN	16
-$L$bad_keybits::
+$L$bad_keybits:
 	mov	rax,-2
-$L$enc_key_ret::
+$L$enc_key_ret:
 	add	rsp,8
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_set_encrypt_key::
+$L$SEH_end_set_encrypt_key:
 
 ALIGN	16
-$L$key_expansion_128::
-	movups	XMMWORD PTR[rax],xmm0
-	lea	rax,QWORD PTR[16+rax]
-$L$key_expansion_128_cold::
+$L$key_expansion_128:
+	movups	XMMWORD[rax],xmm0
+	lea	rax,[16+rax]
+$L$key_expansion_128_cold:
 	shufps	xmm4,xmm0,16
 	xorps	xmm0,xmm4
 	shufps	xmm4,xmm0,140
@@ -3305,12 +3302,12 @@
 	DB	0F3h,0C3h		;repret
 
 ALIGN	16
-$L$key_expansion_192a::
-	movups	XMMWORD PTR[rax],xmm0
-	lea	rax,QWORD PTR[16+rax]
-$L$key_expansion_192a_cold::
+$L$key_expansion_192a:
+	movups	XMMWORD[rax],xmm0
+	lea	rax,[16+rax]
+$L$key_expansion_192a_cold:
 	movaps	xmm5,xmm2
-$L$key_expansion_192b_warm::
+$L$key_expansion_192b_warm:
 	shufps	xmm4,xmm0,16
 	movdqa	xmm3,xmm2
 	xorps	xmm0,xmm4
@@ -3325,20 +3322,20 @@
 	DB	0F3h,0C3h		;repret
 
 ALIGN	16
-$L$key_expansion_192b::
+$L$key_expansion_192b:
 	movaps	xmm3,xmm0
 	shufps	xmm5,xmm0,68
-	movups	XMMWORD PTR[rax],xmm5
+	movups	XMMWORD[rax],xmm5
 	shufps	xmm3,xmm2,78
-	movups	XMMWORD PTR[16+rax],xmm3
-	lea	rax,QWORD PTR[32+rax]
-	jmp	$L$key_expansion_192b_warm
+	movups	XMMWORD[16+rax],xmm3
+	lea	rax,[32+rax]
+	jmp	NEAR $L$key_expansion_192b_warm
 
 ALIGN	16
-$L$key_expansion_256a::
-	movups	XMMWORD PTR[rax],xmm2
-	lea	rax,QWORD PTR[16+rax]
-$L$key_expansion_256a_cold::
+$L$key_expansion_256a:
+	movups	XMMWORD[rax],xmm2
+	lea	rax,[16+rax]
+$L$key_expansion_256a_cold:
 	shufps	xmm4,xmm0,16
 	xorps	xmm0,xmm4
 	shufps	xmm4,xmm0,140
@@ -3348,9 +3345,9 @@
 	DB	0F3h,0C3h		;repret
 
 ALIGN	16
-$L$key_expansion_256b::
-	movups	XMMWORD PTR[rax],xmm0
-	lea	rax,QWORD PTR[16+rax]
+$L$key_expansion_256b:
+	movups	XMMWORD[rax],xmm0
+	lea	rax,[16+rax]
 
 	shufps	xmm4,xmm2,16
 	xorps	xmm2,xmm4
@@ -3359,18 +3356,18 @@
 	shufps	xmm1,xmm1,170
 	xorps	xmm2,xmm1
 	DB	0F3h,0C3h		;repret
-aesni_set_encrypt_key	ENDP
+
 
 ALIGN	64
-$L$bswap_mask::
+$L$bswap_mask:
 DB	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
-$L$increment32::
+$L$increment32:
 	DD	6,6,6,0
-$L$increment64::
+$L$increment64:
 	DD	1,0,0,0
-$L$xts_magic::
-	DD	087h,0,1,0
-$L$increment1::
+$L$xts_magic:
+	DD	0x87,0,1,0
+$L$increment1:
 DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
 
 DB	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
@@ -3378,10 +3375,10 @@
 DB	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
 DB	115,108,46,111,114,103,62,0
 ALIGN	64
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-ecb_se_handler	PROC PRIVATE
+ecb_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -3393,14 +3390,14 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	jmp	$L$common_seh_tail
-ecb_se_handler	ENDP
+	jmp	NEAR $L$common_seh_tail
+
 
 
 ALIGN	16
-ccm64_se_handler	PROC PRIVATE
+ccm64_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -3412,36 +3409,36 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	lea	rsi,QWORD PTR[rax]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[rax]
+	lea	rdi,[512+r8]
 	mov	ecx,8
-	DD	0a548f3fch
-	lea	rax,QWORD PTR[88+rax]
+	DD	0xa548f3fc
+	lea	rax,[88+rax]
 
-	jmp	$L$common_seh_tail
-ccm64_se_handler	ENDP
+	jmp	NEAR $L$common_seh_tail
+
 
 
 ALIGN	16
-ctr_xts_se_handler	PROC PRIVATE
+ctr_xts_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -3453,35 +3450,35 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[160+r8]
-	lea	rsi,QWORD PTR[((-160))+rax]
-	lea	rdi,QWORD PTR[512+r8]
+	mov	rax,QWORD[160+r8]
+	lea	rsi,[((-160))+rax]
+	lea	rdi,[512+r8]
 	mov	ecx,20
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
-	jmp	$L$common_rbp_tail
-ctr_xts_se_handler	ENDP
+	jmp	NEAR $L$common_rbp_tail
+
 
 ALIGN	16
-cbc_se_handler	PROC PRIVATE
+cbc_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -3493,61 +3490,61 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[152+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[152+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$cbc_decrypt]
+	lea	r10,[$L$cbc_decrypt]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	lea	r10,QWORD PTR[$L$cbc_decrypt_body]
+	lea	r10,[$L$cbc_decrypt_body]
 	cmp	rbx,r10
-	jb	$L$restore_cbc_rax
+	jb	NEAR $L$restore_cbc_rax
 
-	lea	r10,QWORD PTR[$L$cbc_ret]
+	lea	r10,[$L$cbc_ret]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	lea	rsi,QWORD PTR[16+rax]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[16+rax]
+	lea	rdi,[512+r8]
 	mov	ecx,20
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
-$L$common_rbp_tail::
-	mov	rax,QWORD PTR[160+r8]
-	mov	rbp,QWORD PTR[rax]
-	lea	rax,QWORD PTR[8+rax]
-	mov	QWORD PTR[160+r8],rbp
-	jmp	$L$common_seh_tail
+$L$common_rbp_tail:
+	mov	rax,QWORD[160+r8]
+	mov	rbp,QWORD[rax]
+	lea	rax,[8+rax]
+	mov	QWORD[160+r8],rbp
+	jmp	NEAR $L$common_seh_tail
 
-$L$restore_cbc_rax::
-	mov	rax,QWORD PTR[120+r8]
+$L$restore_cbc_rax:
+	mov	rax,QWORD[120+r8]
 
-$L$common_seh_tail::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$common_seh_tail:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -3561,77 +3558,72 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-cbc_se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_aesni_ecb_encrypt
-	DD	imagerel $L$SEH_end_aesni_ecb_encrypt
-	DD	imagerel $L$SEH_info_ecb
+	DD	$L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase
+	DD	$L$SEH_end_aesni_ecb_encrypt wrt ..imagebase
+	DD	$L$SEH_info_ecb wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_aesni_ccm64_encrypt_blocks
-	DD	imagerel $L$SEH_end_aesni_ccm64_encrypt_blocks
-	DD	imagerel $L$SEH_info_ccm64_enc
+	DD	$L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase
+	DD	$L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase
+	DD	$L$SEH_info_ccm64_enc wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_aesni_ccm64_decrypt_blocks
-	DD	imagerel $L$SEH_end_aesni_ccm64_decrypt_blocks
-	DD	imagerel $L$SEH_info_ccm64_dec
+	DD	$L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase
+	DD	$L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase
+	DD	$L$SEH_info_ccm64_dec wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_aesni_ctr32_encrypt_blocks
-	DD	imagerel $L$SEH_end_aesni_ctr32_encrypt_blocks
-	DD	imagerel $L$SEH_info_ctr32
+	DD	$L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase
+	DD	$L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase
+	DD	$L$SEH_info_ctr32 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_aesni_xts_encrypt
-	DD	imagerel $L$SEH_end_aesni_xts_encrypt
-	DD	imagerel $L$SEH_info_xts_enc
+	DD	$L$SEH_begin_aesni_xts_encrypt wrt ..imagebase
+	DD	$L$SEH_end_aesni_xts_encrypt wrt ..imagebase
+	DD	$L$SEH_info_xts_enc wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_aesni_xts_decrypt
-	DD	imagerel $L$SEH_end_aesni_xts_decrypt
-	DD	imagerel $L$SEH_info_xts_dec
-	DD	imagerel $L$SEH_begin_aesni_cbc_encrypt
-	DD	imagerel $L$SEH_end_aesni_cbc_encrypt
-	DD	imagerel $L$SEH_info_cbc
+	DD	$L$SEH_begin_aesni_xts_decrypt wrt ..imagebase
+	DD	$L$SEH_end_aesni_xts_decrypt wrt ..imagebase
+	DD	$L$SEH_info_xts_dec wrt ..imagebase
+	DD	$L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase
+	DD	$L$SEH_end_aesni_cbc_encrypt wrt ..imagebase
+	DD	$L$SEH_info_cbc wrt ..imagebase
 
-	DD	imagerel aesni_set_decrypt_key
-	DD	imagerel $L$SEH_end_set_decrypt_key
-	DD	imagerel $L$SEH_info_key
+	DD	aesni_set_decrypt_key wrt ..imagebase
+	DD	$L$SEH_end_set_decrypt_key wrt ..imagebase
+	DD	$L$SEH_info_key wrt ..imagebase
 
-	DD	imagerel aesni_set_encrypt_key
-	DD	imagerel $L$SEH_end_set_encrypt_key
-	DD	imagerel $L$SEH_info_key
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+	DD	aesni_set_encrypt_key wrt ..imagebase
+	DD	$L$SEH_end_set_encrypt_key wrt ..imagebase
+	DD	$L$SEH_info_key wrt ..imagebase
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_ecb::
+$L$SEH_info_ecb:
 DB	9,0,0,0
-	DD	imagerel ecb_se_handler
-$L$SEH_info_ccm64_enc::
+	DD	ecb_se_handler wrt ..imagebase
+$L$SEH_info_ccm64_enc:
 DB	9,0,0,0
-	DD	imagerel ccm64_se_handler
-	DD	imagerel $L$ccm64_enc_body,imagerel $L$ccm64_enc_ret
-$L$SEH_info_ccm64_dec::
+	DD	ccm64_se_handler wrt ..imagebase
+	DD	$L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase
+$L$SEH_info_ccm64_dec:
 DB	9,0,0,0
-	DD	imagerel ccm64_se_handler
-	DD	imagerel $L$ccm64_dec_body,imagerel $L$ccm64_dec_ret
-$L$SEH_info_ctr32::
+	DD	ccm64_se_handler wrt ..imagebase
+	DD	$L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase
+$L$SEH_info_ctr32:
 DB	9,0,0,0
-	DD	imagerel ctr_xts_se_handler
-	DD	imagerel $L$ctr32_body,imagerel $L$ctr32_epilogue
-$L$SEH_info_xts_enc::
+	DD	ctr_xts_se_handler wrt ..imagebase
+	DD	$L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase
+$L$SEH_info_xts_enc:
 DB	9,0,0,0
-	DD	imagerel ctr_xts_se_handler
-	DD	imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue
-$L$SEH_info_xts_dec::
+	DD	ctr_xts_se_handler wrt ..imagebase
+	DD	$L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase
+$L$SEH_info_xts_dec:
 DB	9,0,0,0
-	DD	imagerel ctr_xts_se_handler
-	DD	imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue
-$L$SEH_info_cbc::
+	DD	ctr_xts_se_handler wrt ..imagebase
+	DD	$L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase
+$L$SEH_info_cbc:
 DB	9,0,0,0
-	DD	imagerel cbc_se_handler
-$L$SEH_info_key::
-DB	001h,004h,001h,000h
-DB	004h,002h,000h,000h
-
-.xdata	ENDS
-END
+	DD	cbc_se_handler wrt ..imagebase
+$L$SEH_info_key:
+DB	0x01,0x04,0x01,0x00
+DB	0x04,0x02,0x00,0x00
diff --git a/third_party/boringssl/win-x86_64/crypto/aes/bsaes-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/aes/bsaes-x86_64.asm
index 3346a7e..6d75248 100644
--- a/third_party/boringssl/win-x86_64/crypto/aes/bsaes-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/aes/bsaes-x86_64.asm
@@ -1,17 +1,21 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-EXTERN	asm_AES_encrypt:NEAR
-EXTERN	asm_AES_decrypt:NEAR
+
+EXTERN	asm_AES_encrypt
+EXTERN	asm_AES_decrypt
 
 
 ALIGN	64
-_bsaes_encrypt8	PROC PRIVATE
-	lea	r11,QWORD PTR[$L$BS0]
+_bsaes_encrypt8:
+	lea	r11,[$L$BS0]
 
-	movdqa	xmm8,XMMWORD PTR[rax]
-	lea	rax,QWORD PTR[16+rax]
-	movdqa	xmm7,XMMWORD PTR[80+r11]
+	movdqa	xmm8,XMMWORD[rax]
+	lea	rax,[16+rax]
+	movdqa	xmm7,XMMWORD[80+r11]
 	pxor	xmm15,xmm8
 	pxor	xmm0,xmm8
 	pxor	xmm1,xmm8
@@ -28,9 +32,9 @@
 DB	102,15,56,0,231
 DB	102,15,56,0,239
 DB	102,15,56,0,247
-_bsaes_encrypt8_bitslice::
-	movdqa	xmm7,XMMWORD PTR[r11]
-	movdqa	xmm8,XMMWORD PTR[16+r11]
+_bsaes_encrypt8_bitslice:
+	movdqa	xmm7,XMMWORD[r11]
+	movdqa	xmm8,XMMWORD[16+r11]
 	movdqa	xmm9,xmm5
 	psrlq	xmm5,1
 	movdqa	xmm10,xmm3
@@ -59,7 +63,7 @@
 	psllq	xmm15,1
 	pxor	xmm1,xmm9
 	pxor	xmm15,xmm10
-	movdqa	xmm7,XMMWORD PTR[32+r11]
+	movdqa	xmm7,XMMWORD[32+r11]
 	movdqa	xmm9,xmm4
 	psrlq	xmm4,2
 	movdqa	xmm10,xmm3
@@ -117,27 +121,27 @@
 	pxor	xmm0,xmm9
 	pxor	xmm15,xmm10
 	dec	r10d
-	jmp	$L$enc_sbox
+	jmp	NEAR $L$enc_sbox
 ALIGN	16
-$L$enc_loop::
-	pxor	xmm15,XMMWORD PTR[rax]
-	pxor	xmm0,XMMWORD PTR[16+rax]
-	pxor	xmm1,XMMWORD PTR[32+rax]
-	pxor	xmm2,XMMWORD PTR[48+rax]
+$L$enc_loop:
+	pxor	xmm15,XMMWORD[rax]
+	pxor	xmm0,XMMWORD[16+rax]
+	pxor	xmm1,XMMWORD[32+rax]
+	pxor	xmm2,XMMWORD[48+rax]
 DB	102,68,15,56,0,255
 DB	102,15,56,0,199
-	pxor	xmm3,XMMWORD PTR[64+rax]
-	pxor	xmm4,XMMWORD PTR[80+rax]
+	pxor	xmm3,XMMWORD[64+rax]
+	pxor	xmm4,XMMWORD[80+rax]
 DB	102,15,56,0,207
 DB	102,15,56,0,215
-	pxor	xmm5,XMMWORD PTR[96+rax]
-	pxor	xmm6,XMMWORD PTR[112+rax]
+	pxor	xmm5,XMMWORD[96+rax]
+	pxor	xmm6,XMMWORD[112+rax]
 DB	102,15,56,0,223
 DB	102,15,56,0,231
 DB	102,15,56,0,239
 DB	102,15,56,0,247
-	lea	rax,QWORD PTR[128+rax]
-$L$enc_sbox::
+	lea	rax,[128+rax]
+$L$enc_sbox:
 	pxor	xmm4,xmm5
 	pxor	xmm1,xmm0
 	pxor	xmm2,xmm15
@@ -324,46 +328,46 @@
 
 	pxor	xmm5,xmm2
 	dec	r10d
-	jl	$L$enc_done
-	pshufd	xmm7,xmm15,093h
-	pshufd	xmm8,xmm0,093h
+	jl	NEAR $L$enc_done
+	pshufd	xmm7,xmm15,0x93
+	pshufd	xmm8,xmm0,0x93
 	pxor	xmm15,xmm7
-	pshufd	xmm9,xmm3,093h
+	pshufd	xmm9,xmm3,0x93
 	pxor	xmm0,xmm8
-	pshufd	xmm10,xmm5,093h
+	pshufd	xmm10,xmm5,0x93
 	pxor	xmm3,xmm9
-	pshufd	xmm11,xmm2,093h
+	pshufd	xmm11,xmm2,0x93
 	pxor	xmm5,xmm10
-	pshufd	xmm12,xmm6,093h
+	pshufd	xmm12,xmm6,0x93
 	pxor	xmm2,xmm11
-	pshufd	xmm13,xmm1,093h
+	pshufd	xmm13,xmm1,0x93
 	pxor	xmm6,xmm12
-	pshufd	xmm14,xmm4,093h
+	pshufd	xmm14,xmm4,0x93
 	pxor	xmm1,xmm13
 	pxor	xmm4,xmm14
 
 	pxor	xmm8,xmm15
 	pxor	xmm7,xmm4
 	pxor	xmm8,xmm4
-	pshufd	xmm15,xmm15,04Eh
+	pshufd	xmm15,xmm15,0x4E
 	pxor	xmm9,xmm0
-	pshufd	xmm0,xmm0,04Eh
+	pshufd	xmm0,xmm0,0x4E
 	pxor	xmm12,xmm2
 	pxor	xmm15,xmm7
 	pxor	xmm13,xmm6
 	pxor	xmm0,xmm8
 	pxor	xmm11,xmm5
-	pshufd	xmm7,xmm2,04Eh
+	pshufd	xmm7,xmm2,0x4E
 	pxor	xmm14,xmm1
-	pshufd	xmm8,xmm6,04Eh
+	pshufd	xmm8,xmm6,0x4E
 	pxor	xmm10,xmm3
-	pshufd	xmm2,xmm5,04Eh
+	pshufd	xmm2,xmm5,0x4E
 	pxor	xmm10,xmm4
-	pshufd	xmm6,xmm4,04Eh
+	pshufd	xmm6,xmm4,0x4E
 	pxor	xmm11,xmm4
-	pshufd	xmm5,xmm1,04Eh
+	pshufd	xmm5,xmm1,0x4E
 	pxor	xmm7,xmm11
-	pshufd	xmm1,xmm3,04Eh
+	pshufd	xmm1,xmm3,0x4E
 	pxor	xmm8,xmm12
 	pxor	xmm2,xmm10
 	pxor	xmm6,xmm14
@@ -371,14 +375,14 @@
 	movdqa	xmm3,xmm7
 	pxor	xmm1,xmm9
 	movdqa	xmm4,xmm8
-	movdqa	xmm7,XMMWORD PTR[48+r11]
-	jnz	$L$enc_loop
-	movdqa	xmm7,XMMWORD PTR[64+r11]
-	jmp	$L$enc_loop
+	movdqa	xmm7,XMMWORD[48+r11]
+	jnz	NEAR $L$enc_loop
+	movdqa	xmm7,XMMWORD[64+r11]
+	jmp	NEAR $L$enc_loop
 ALIGN	16
-$L$enc_done::
-	movdqa	xmm7,XMMWORD PTR[r11]
-	movdqa	xmm8,XMMWORD PTR[16+r11]
+$L$enc_done:
+	movdqa	xmm7,XMMWORD[r11]
+	movdqa	xmm8,XMMWORD[16+r11]
 	movdqa	xmm9,xmm1
 	psrlq	xmm1,1
 	movdqa	xmm10,xmm2
@@ -407,7 +411,7 @@
 	psllq	xmm15,1
 	pxor	xmm3,xmm9
 	pxor	xmm15,xmm10
-	movdqa	xmm7,XMMWORD PTR[32+r11]
+	movdqa	xmm7,XMMWORD[32+r11]
 	movdqa	xmm9,xmm6
 	psrlq	xmm6,2
 	movdqa	xmm10,xmm2
@@ -464,7 +468,7 @@
 	psllq	xmm15,4
 	pxor	xmm0,xmm9
 	pxor	xmm15,xmm10
-	movdqa	xmm7,XMMWORD PTR[rax]
+	movdqa	xmm7,XMMWORD[rax]
 	pxor	xmm3,xmm7
 	pxor	xmm5,xmm7
 	pxor	xmm2,xmm7
@@ -474,16 +478,16 @@
 	pxor	xmm15,xmm7
 	pxor	xmm0,xmm7
 	DB	0F3h,0C3h		;repret
-_bsaes_encrypt8	ENDP
+
 
 
 ALIGN	64
-_bsaes_decrypt8	PROC PRIVATE
-	lea	r11,QWORD PTR[$L$BS0]
+_bsaes_decrypt8:
+	lea	r11,[$L$BS0]
 
-	movdqa	xmm8,XMMWORD PTR[rax]
-	lea	rax,QWORD PTR[16+rax]
-	movdqa	xmm7,XMMWORD PTR[((-48))+r11]
+	movdqa	xmm8,XMMWORD[rax]
+	lea	rax,[16+rax]
+	movdqa	xmm7,XMMWORD[((-48))+r11]
 	pxor	xmm15,xmm8
 	pxor	xmm0,xmm8
 	pxor	xmm1,xmm8
@@ -500,8 +504,8 @@
 DB	102,15,56,0,231
 DB	102,15,56,0,239
 DB	102,15,56,0,247
-	movdqa	xmm7,XMMWORD PTR[r11]
-	movdqa	xmm8,XMMWORD PTR[16+r11]
+	movdqa	xmm7,XMMWORD[r11]
+	movdqa	xmm8,XMMWORD[16+r11]
 	movdqa	xmm9,xmm5
 	psrlq	xmm5,1
 	movdqa	xmm10,xmm3
@@ -530,7 +534,7 @@
 	psllq	xmm15,1
 	pxor	xmm1,xmm9
 	pxor	xmm15,xmm10
-	movdqa	xmm7,XMMWORD PTR[32+r11]
+	movdqa	xmm7,XMMWORD[32+r11]
 	movdqa	xmm9,xmm4
 	psrlq	xmm4,2
 	movdqa	xmm10,xmm3
@@ -588,27 +592,27 @@
 	pxor	xmm0,xmm9
 	pxor	xmm15,xmm10
 	dec	r10d
-	jmp	$L$dec_sbox
+	jmp	NEAR $L$dec_sbox
 ALIGN	16
-$L$dec_loop::
-	pxor	xmm15,XMMWORD PTR[rax]
-	pxor	xmm0,XMMWORD PTR[16+rax]
-	pxor	xmm1,XMMWORD PTR[32+rax]
-	pxor	xmm2,XMMWORD PTR[48+rax]
+$L$dec_loop:
+	pxor	xmm15,XMMWORD[rax]
+	pxor	xmm0,XMMWORD[16+rax]
+	pxor	xmm1,XMMWORD[32+rax]
+	pxor	xmm2,XMMWORD[48+rax]
 DB	102,68,15,56,0,255
 DB	102,15,56,0,199
-	pxor	xmm3,XMMWORD PTR[64+rax]
-	pxor	xmm4,XMMWORD PTR[80+rax]
+	pxor	xmm3,XMMWORD[64+rax]
+	pxor	xmm4,XMMWORD[80+rax]
 DB	102,15,56,0,207
 DB	102,15,56,0,215
-	pxor	xmm5,XMMWORD PTR[96+rax]
-	pxor	xmm6,XMMWORD PTR[112+rax]
+	pxor	xmm5,XMMWORD[96+rax]
+	pxor	xmm6,XMMWORD[112+rax]
 DB	102,15,56,0,223
 DB	102,15,56,0,231
 DB	102,15,56,0,239
 DB	102,15,56,0,247
-	lea	rax,QWORD PTR[128+rax]
-$L$dec_sbox::
+	lea	rax,[128+rax]
+$L$dec_sbox:
 	pxor	xmm2,xmm3
 
 	pxor	xmm3,xmm6
@@ -795,26 +799,26 @@
 	pxor	xmm3,xmm15
 	pxor	xmm6,xmm2
 	dec	r10d
-	jl	$L$dec_done
+	jl	NEAR $L$dec_done
 
-	pshufd	xmm7,xmm15,04Eh
-	pshufd	xmm13,xmm2,04Eh
+	pshufd	xmm7,xmm15,0x4E
+	pshufd	xmm13,xmm2,0x4E
 	pxor	xmm7,xmm15
-	pshufd	xmm14,xmm4,04Eh
+	pshufd	xmm14,xmm4,0x4E
 	pxor	xmm13,xmm2
-	pshufd	xmm8,xmm0,04Eh
+	pshufd	xmm8,xmm0,0x4E
 	pxor	xmm14,xmm4
-	pshufd	xmm9,xmm5,04Eh
+	pshufd	xmm9,xmm5,0x4E
 	pxor	xmm8,xmm0
-	pshufd	xmm10,xmm3,04Eh
+	pshufd	xmm10,xmm3,0x4E
 	pxor	xmm9,xmm5
 	pxor	xmm15,xmm13
 	pxor	xmm0,xmm13
-	pshufd	xmm11,xmm1,04Eh
+	pshufd	xmm11,xmm1,0x4E
 	pxor	xmm10,xmm3
 	pxor	xmm5,xmm7
 	pxor	xmm3,xmm8
-	pshufd	xmm12,xmm6,04Eh
+	pshufd	xmm12,xmm6,0x4E
 	pxor	xmm11,xmm1
 	pxor	xmm0,xmm14
 	pxor	xmm1,xmm9
@@ -828,45 +832,45 @@
 	pxor	xmm1,xmm14
 	pxor	xmm6,xmm14
 	pxor	xmm4,xmm12
-	pshufd	xmm7,xmm15,093h
-	pshufd	xmm8,xmm0,093h
+	pshufd	xmm7,xmm15,0x93
+	pshufd	xmm8,xmm0,0x93
 	pxor	xmm15,xmm7
-	pshufd	xmm9,xmm5,093h
+	pshufd	xmm9,xmm5,0x93
 	pxor	xmm0,xmm8
-	pshufd	xmm10,xmm3,093h
+	pshufd	xmm10,xmm3,0x93
 	pxor	xmm5,xmm9
-	pshufd	xmm11,xmm1,093h
+	pshufd	xmm11,xmm1,0x93
 	pxor	xmm3,xmm10
-	pshufd	xmm12,xmm6,093h
+	pshufd	xmm12,xmm6,0x93
 	pxor	xmm1,xmm11
-	pshufd	xmm13,xmm2,093h
+	pshufd	xmm13,xmm2,0x93
 	pxor	xmm6,xmm12
-	pshufd	xmm14,xmm4,093h
+	pshufd	xmm14,xmm4,0x93
 	pxor	xmm2,xmm13
 	pxor	xmm4,xmm14
 
 	pxor	xmm8,xmm15
 	pxor	xmm7,xmm4
 	pxor	xmm8,xmm4
-	pshufd	xmm15,xmm15,04Eh
+	pshufd	xmm15,xmm15,0x4E
 	pxor	xmm9,xmm0
-	pshufd	xmm0,xmm0,04Eh
+	pshufd	xmm0,xmm0,0x4E
 	pxor	xmm12,xmm1
 	pxor	xmm15,xmm7
 	pxor	xmm13,xmm6
 	pxor	xmm0,xmm8
 	pxor	xmm11,xmm3
-	pshufd	xmm7,xmm1,04Eh
+	pshufd	xmm7,xmm1,0x4E
 	pxor	xmm14,xmm2
-	pshufd	xmm8,xmm6,04Eh
+	pshufd	xmm8,xmm6,0x4E
 	pxor	xmm10,xmm5
-	pshufd	xmm1,xmm3,04Eh
+	pshufd	xmm1,xmm3,0x4E
 	pxor	xmm10,xmm4
-	pshufd	xmm6,xmm4,04Eh
+	pshufd	xmm6,xmm4,0x4E
 	pxor	xmm11,xmm4
-	pshufd	xmm3,xmm2,04Eh
+	pshufd	xmm3,xmm2,0x4E
 	pxor	xmm7,xmm11
-	pshufd	xmm2,xmm5,04Eh
+	pshufd	xmm2,xmm5,0x4E
 	pxor	xmm8,xmm12
 	pxor	xmm10,xmm1
 	pxor	xmm6,xmm14
@@ -877,14 +881,14 @@
 	movdqa	xmm4,xmm8
 	movdqa	xmm1,xmm2
 	movdqa	xmm2,xmm10
-	movdqa	xmm7,XMMWORD PTR[((-16))+r11]
-	jnz	$L$dec_loop
-	movdqa	xmm7,XMMWORD PTR[((-32))+r11]
-	jmp	$L$dec_loop
+	movdqa	xmm7,XMMWORD[((-16))+r11]
+	jnz	NEAR $L$dec_loop
+	movdqa	xmm7,XMMWORD[((-32))+r11]
+	jmp	NEAR $L$dec_loop
 ALIGN	16
-$L$dec_done::
-	movdqa	xmm7,XMMWORD PTR[r11]
-	movdqa	xmm8,XMMWORD PTR[16+r11]
+$L$dec_done:
+	movdqa	xmm7,XMMWORD[r11]
+	movdqa	xmm8,XMMWORD[16+r11]
 	movdqa	xmm9,xmm2
 	psrlq	xmm2,1
 	movdqa	xmm10,xmm1
@@ -913,7 +917,7 @@
 	psllq	xmm15,1
 	pxor	xmm5,xmm9
 	pxor	xmm15,xmm10
-	movdqa	xmm7,XMMWORD PTR[32+r11]
+	movdqa	xmm7,XMMWORD[32+r11]
 	movdqa	xmm9,xmm6
 	psrlq	xmm6,2
 	movdqa	xmm10,xmm1
@@ -970,7 +974,7 @@
 	psllq	xmm15,4
 	pxor	xmm0,xmm9
 	pxor	xmm15,xmm10
-	movdqa	xmm7,XMMWORD PTR[rax]
+	movdqa	xmm7,XMMWORD[rax]
 	pxor	xmm5,xmm7
 	pxor	xmm3,xmm7
 	pxor	xmm1,xmm7
@@ -980,27 +984,27 @@
 	pxor	xmm15,xmm7
 	pxor	xmm0,xmm7
 	DB	0F3h,0C3h		;repret
-_bsaes_decrypt8	ENDP
+
 
 ALIGN	16
-_bsaes_key_convert	PROC PRIVATE
-	lea	r11,QWORD PTR[$L$masks]
-	movdqu	xmm7,XMMWORD PTR[rcx]
-	lea	rcx,QWORD PTR[16+rcx]
-	movdqa	xmm0,XMMWORD PTR[r11]
-	movdqa	xmm1,XMMWORD PTR[16+r11]
-	movdqa	xmm2,XMMWORD PTR[32+r11]
-	movdqa	xmm3,XMMWORD PTR[48+r11]
-	movdqa	xmm4,XMMWORD PTR[64+r11]
+_bsaes_key_convert:
+	lea	r11,[$L$masks]
+	movdqu	xmm7,XMMWORD[rcx]
+	lea	rcx,[16+rcx]
+	movdqa	xmm0,XMMWORD[r11]
+	movdqa	xmm1,XMMWORD[16+r11]
+	movdqa	xmm2,XMMWORD[32+r11]
+	movdqa	xmm3,XMMWORD[48+r11]
+	movdqa	xmm4,XMMWORD[64+r11]
 	pcmpeqd	xmm5,xmm5
 
-	movdqu	xmm6,XMMWORD PTR[rcx]
-	movdqa	XMMWORD PTR[rax],xmm7
-	lea	rax,QWORD PTR[16+rax]
+	movdqu	xmm6,XMMWORD[rcx]
+	movdqa	XMMWORD[rax],xmm7
+	lea	rax,[16+rax]
 	dec	r10d
-	jmp	$L$key_loop
+	jmp	NEAR $L$key_loop
 ALIGN	16
-$L$key_loop::
+$L$key_loop:
 DB	102,15,56,0,244
 
 	movdqa	xmm8,xmm0
@@ -1031,73 +1035,73 @@
 
 	pand	xmm12,xmm6
 	pand	xmm13,xmm6
-	movdqa	XMMWORD PTR[rax],xmm8
+	movdqa	XMMWORD[rax],xmm8
 	pcmpeqb	xmm12,xmm0
 	psrlq	xmm0,4
-	movdqa	XMMWORD PTR[16+rax],xmm9
+	movdqa	XMMWORD[16+rax],xmm9
 	pcmpeqb	xmm13,xmm1
 	psrlq	xmm1,4
-	lea	rcx,QWORD PTR[16+rcx]
+	lea	rcx,[16+rcx]
 
 	pand	xmm14,xmm6
 	pand	xmm15,xmm6
-	movdqa	XMMWORD PTR[32+rax],xmm10
+	movdqa	XMMWORD[32+rax],xmm10
 	pcmpeqb	xmm14,xmm2
 	psrlq	xmm2,4
-	movdqa	XMMWORD PTR[48+rax],xmm11
+	movdqa	XMMWORD[48+rax],xmm11
 	pcmpeqb	xmm15,xmm3
 	psrlq	xmm3,4
-	movdqu	xmm6,XMMWORD PTR[rcx]
+	movdqu	xmm6,XMMWORD[rcx]
 
 	pxor	xmm13,xmm5
 	pxor	xmm14,xmm5
-	movdqa	XMMWORD PTR[64+rax],xmm12
-	movdqa	XMMWORD PTR[80+rax],xmm13
-	movdqa	XMMWORD PTR[96+rax],xmm14
-	movdqa	XMMWORD PTR[112+rax],xmm15
-	lea	rax,QWORD PTR[128+rax]
+	movdqa	XMMWORD[64+rax],xmm12
+	movdqa	XMMWORD[80+rax],xmm13
+	movdqa	XMMWORD[96+rax],xmm14
+	movdqa	XMMWORD[112+rax],xmm15
+	lea	rax,[128+rax]
 	dec	r10d
-	jnz	$L$key_loop
+	jnz	NEAR $L$key_loop
 
-	movdqa	xmm7,XMMWORD PTR[80+r11]
+	movdqa	xmm7,XMMWORD[80+r11]
 
 	DB	0F3h,0C3h		;repret
-_bsaes_key_convert	ENDP
-EXTERN	asm_AES_cbc_encrypt:NEAR
-PUBLIC	bsaes_cbc_encrypt
+
+EXTERN	asm_AES_cbc_encrypt
+global	bsaes_cbc_encrypt
 
 ALIGN	16
-bsaes_cbc_encrypt	PROC PUBLIC
-	mov	r11d,DWORD PTR[48+rsp]
+bsaes_cbc_encrypt:
+	mov	r11d,DWORD[48+rsp]
 	cmp	r11d,0
-	jne	asm_AES_cbc_encrypt
+	jne	NEAR asm_AES_cbc_encrypt
 	cmp	r8,128
-	jb	asm_AES_cbc_encrypt
+	jb	NEAR asm_AES_cbc_encrypt
 
 	mov	rax,rsp
-$L$cbc_dec_prologue::
+$L$cbc_dec_prologue:
 	push	rbp
 	push	rbx
 	push	r12
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-72))+rsp]
-	mov	r10,QWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[((-160))+rsp]
-	movaps	XMMWORD PTR[64+rsp],xmm6
-	movaps	XMMWORD PTR[80+rsp],xmm7
-	movaps	XMMWORD PTR[96+rsp],xmm8
-	movaps	XMMWORD PTR[112+rsp],xmm9
-	movaps	XMMWORD PTR[128+rsp],xmm10
-	movaps	XMMWORD PTR[144+rsp],xmm11
-	movaps	XMMWORD PTR[160+rsp],xmm12
-	movaps	XMMWORD PTR[176+rsp],xmm13
-	movaps	XMMWORD PTR[192+rsp],xmm14
-	movaps	XMMWORD PTR[208+rsp],xmm15
-$L$cbc_dec_body::
+	lea	rsp,[((-72))+rsp]
+	mov	r10,QWORD[160+rsp]
+	lea	rsp,[((-160))+rsp]
+	movaps	XMMWORD[64+rsp],xmm6
+	movaps	XMMWORD[80+rsp],xmm7
+	movaps	XMMWORD[96+rsp],xmm8
+	movaps	XMMWORD[112+rsp],xmm9
+	movaps	XMMWORD[128+rsp],xmm10
+	movaps	XMMWORD[144+rsp],xmm11
+	movaps	XMMWORD[160+rsp],xmm12
+	movaps	XMMWORD[176+rsp],xmm13
+	movaps	XMMWORD[192+rsp],xmm14
+	movaps	XMMWORD[208+rsp],xmm15
+$L$cbc_dec_body:
 	mov	rbp,rsp
-	mov	eax,DWORD PTR[240+r9]
+	mov	eax,DWORD[240+r9]
 	mov	r12,rcx
 	mov	r13,rdx
 	mov	r14,r8
@@ -1114,267 +1118,267 @@
 	mov	rcx,r15
 	mov	r10d,edx
 	call	_bsaes_key_convert
-	pxor	xmm7,XMMWORD PTR[rsp]
-	movdqa	XMMWORD PTR[rax],xmm6
-	movdqa	XMMWORD PTR[rsp],xmm7
+	pxor	xmm7,XMMWORD[rsp]
+	movdqa	XMMWORD[rax],xmm6
+	movdqa	XMMWORD[rsp],xmm7
 
-	movdqu	xmm14,XMMWORD PTR[rbx]
+	movdqu	xmm14,XMMWORD[rbx]
 	sub	r14,8
-$L$cbc_dec_loop::
-	movdqu	xmm15,XMMWORD PTR[r12]
-	movdqu	xmm0,XMMWORD PTR[16+r12]
-	movdqu	xmm1,XMMWORD PTR[32+r12]
-	movdqu	xmm2,XMMWORD PTR[48+r12]
-	movdqu	xmm3,XMMWORD PTR[64+r12]
-	movdqu	xmm4,XMMWORD PTR[80+r12]
+$L$cbc_dec_loop:
+	movdqu	xmm15,XMMWORD[r12]
+	movdqu	xmm0,XMMWORD[16+r12]
+	movdqu	xmm1,XMMWORD[32+r12]
+	movdqu	xmm2,XMMWORD[48+r12]
+	movdqu	xmm3,XMMWORD[64+r12]
+	movdqu	xmm4,XMMWORD[80+r12]
 	mov	rax,rsp
-	movdqu	xmm5,XMMWORD PTR[96+r12]
+	movdqu	xmm5,XMMWORD[96+r12]
 	mov	r10d,edx
-	movdqu	xmm6,XMMWORD PTR[112+r12]
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+	movdqu	xmm6,XMMWORD[112+r12]
+	movdqa	XMMWORD[32+rbp],xmm14
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm5,xmm8
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm3,xmm9
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	pxor	xmm1,xmm10
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
 	pxor	xmm6,xmm11
-	movdqu	xmm13,XMMWORD PTR[96+r12]
+	movdqu	xmm13,XMMWORD[96+r12]
 	pxor	xmm2,xmm12
-	movdqu	xmm14,XMMWORD PTR[112+r12]
+	movdqu	xmm14,XMMWORD[112+r12]
 	pxor	xmm4,xmm13
-	movdqu	XMMWORD PTR[r13],xmm15
-	lea	r12,QWORD PTR[128+r12]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	movdqu	XMMWORD PTR[96+r13],xmm2
-	movdqu	XMMWORD PTR[112+r13],xmm4
-	lea	r13,QWORD PTR[128+r13]
+	movdqu	XMMWORD[r13],xmm15
+	lea	r12,[128+r12]
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm3
+	movdqu	XMMWORD[64+r13],xmm1
+	movdqu	XMMWORD[80+r13],xmm6
+	movdqu	XMMWORD[96+r13],xmm2
+	movdqu	XMMWORD[112+r13],xmm4
+	lea	r13,[128+r13]
 	sub	r14,8
-	jnc	$L$cbc_dec_loop
+	jnc	NEAR $L$cbc_dec_loop
 
 	add	r14,8
-	jz	$L$cbc_dec_done
+	jz	NEAR $L$cbc_dec_done
 
-	movdqu	xmm15,XMMWORD PTR[r12]
+	movdqu	xmm15,XMMWORD[r12]
 	mov	rax,rsp
 	mov	r10d,edx
 	cmp	r14,2
-	jb	$L$cbc_dec_one
-	movdqu	xmm0,XMMWORD PTR[16+r12]
-	je	$L$cbc_dec_two
-	movdqu	xmm1,XMMWORD PTR[32+r12]
+	jb	NEAR $L$cbc_dec_one
+	movdqu	xmm0,XMMWORD[16+r12]
+	je	NEAR $L$cbc_dec_two
+	movdqu	xmm1,XMMWORD[32+r12]
 	cmp	r14,4
-	jb	$L$cbc_dec_three
-	movdqu	xmm2,XMMWORD PTR[48+r12]
-	je	$L$cbc_dec_four
-	movdqu	xmm3,XMMWORD PTR[64+r12]
+	jb	NEAR $L$cbc_dec_three
+	movdqu	xmm2,XMMWORD[48+r12]
+	je	NEAR $L$cbc_dec_four
+	movdqu	xmm3,XMMWORD[64+r12]
 	cmp	r14,6
-	jb	$L$cbc_dec_five
-	movdqu	xmm4,XMMWORD PTR[80+r12]
-	je	$L$cbc_dec_six
-	movdqu	xmm5,XMMWORD PTR[96+r12]
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+	jb	NEAR $L$cbc_dec_five
+	movdqu	xmm4,XMMWORD[80+r12]
+	je	NEAR $L$cbc_dec_six
+	movdqu	xmm5,XMMWORD[96+r12]
+	movdqa	XMMWORD[32+rbp],xmm14
 	call	_bsaes_decrypt8
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm5,xmm8
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm3,xmm9
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	pxor	xmm1,xmm10
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
 	pxor	xmm6,xmm11
-	movdqu	xmm14,XMMWORD PTR[96+r12]
+	movdqu	xmm14,XMMWORD[96+r12]
 	pxor	xmm2,xmm12
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	movdqu	XMMWORD PTR[96+r13],xmm2
-	jmp	$L$cbc_dec_done
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm3
+	movdqu	XMMWORD[64+r13],xmm1
+	movdqu	XMMWORD[80+r13],xmm6
+	movdqu	XMMWORD[96+r13],xmm2
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_six::
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+$L$cbc_dec_six:
+	movdqa	XMMWORD[32+rbp],xmm14
 	call	_bsaes_decrypt8
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm5,xmm8
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm3,xmm9
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	pxor	xmm1,xmm10
-	movdqu	xmm14,XMMWORD PTR[80+r12]
+	movdqu	xmm14,XMMWORD[80+r12]
 	pxor	xmm6,xmm11
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	jmp	$L$cbc_dec_done
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm3
+	movdqu	XMMWORD[64+r13],xmm1
+	movdqu	XMMWORD[80+r13],xmm6
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_five::
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+$L$cbc_dec_five:
+	movdqa	XMMWORD[32+rbp],xmm14
 	call	_bsaes_decrypt8
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm5,xmm8
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm3,xmm9
-	movdqu	xmm14,XMMWORD PTR[64+r12]
+	movdqu	xmm14,XMMWORD[64+r12]
 	pxor	xmm1,xmm10
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	jmp	$L$cbc_dec_done
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm3
+	movdqu	XMMWORD[64+r13],xmm1
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_four::
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+$L$cbc_dec_four:
+	movdqa	XMMWORD[32+rbp],xmm14
 	call	_bsaes_decrypt8
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm5,xmm8
-	movdqu	xmm14,XMMWORD PTR[48+r12]
+	movdqu	xmm14,XMMWORD[48+r12]
 	pxor	xmm3,xmm9
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	jmp	$L$cbc_dec_done
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm3
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_three::
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+$L$cbc_dec_three:
+	movdqa	XMMWORD[32+rbp],xmm14
 	call	_bsaes_decrypt8
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	xmm14,XMMWORD PTR[32+r12]
+	movdqu	xmm14,XMMWORD[32+r12]
 	pxor	xmm5,xmm8
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	jmp	$L$cbc_dec_done
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_two::
-	movdqa	XMMWORD PTR[32+rbp],xmm14
+$L$cbc_dec_two:
+	movdqa	XMMWORD[32+rbp],xmm14
 	call	_bsaes_decrypt8
-	pxor	xmm15,XMMWORD PTR[32+rbp]
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm14,XMMWORD PTR[16+r12]
+	pxor	xmm15,XMMWORD[32+rbp]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm14,XMMWORD[16+r12]
 	pxor	xmm0,xmm7
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	jmp	$L$cbc_dec_done
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	jmp	NEAR $L$cbc_dec_done
 ALIGN	16
-$L$cbc_dec_one::
-	lea	rcx,QWORD PTR[r12]
-	lea	rdx,QWORD PTR[32+rbp]
-	lea	r8,QWORD PTR[r15]
+$L$cbc_dec_one:
+	lea	rcx,[r12]
+	lea	rdx,[32+rbp]
+	lea	r8,[r15]
 	call	asm_AES_decrypt
-	pxor	xmm14,XMMWORD PTR[32+rbp]
-	movdqu	XMMWORD PTR[r13],xmm14
+	pxor	xmm14,XMMWORD[32+rbp]
+	movdqu	XMMWORD[r13],xmm14
 	movdqa	xmm14,xmm15
 
-$L$cbc_dec_done::
-	movdqu	XMMWORD PTR[rbx],xmm14
-	lea	rax,QWORD PTR[rsp]
+$L$cbc_dec_done:
+	movdqu	XMMWORD[rbx],xmm14
+	lea	rax,[rsp]
 	pxor	xmm0,xmm0
-$L$cbc_dec_bzero::
-	movdqa	XMMWORD PTR[rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm0
-	lea	rax,QWORD PTR[32+rax]
+$L$cbc_dec_bzero:
+	movdqa	XMMWORD[rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm0
+	lea	rax,[32+rax]
 	cmp	rbp,rax
-	ja	$L$cbc_dec_bzero
+	ja	NEAR $L$cbc_dec_bzero
 
-	lea	rsp,QWORD PTR[rbp]
-	movaps	xmm6,XMMWORD PTR[64+rbp]
-	movaps	xmm7,XMMWORD PTR[80+rbp]
-	movaps	xmm8,XMMWORD PTR[96+rbp]
-	movaps	xmm9,XMMWORD PTR[112+rbp]
-	movaps	xmm10,XMMWORD PTR[128+rbp]
-	movaps	xmm11,XMMWORD PTR[144+rbp]
-	movaps	xmm12,XMMWORD PTR[160+rbp]
-	movaps	xmm13,XMMWORD PTR[176+rbp]
-	movaps	xmm14,XMMWORD PTR[192+rbp]
-	movaps	xmm15,XMMWORD PTR[208+rbp]
-	lea	rsp,QWORD PTR[160+rbp]
-	mov	r15,QWORD PTR[72+rsp]
-	mov	r14,QWORD PTR[80+rsp]
-	mov	r13,QWORD PTR[88+rsp]
-	mov	r12,QWORD PTR[96+rsp]
-	mov	rbx,QWORD PTR[104+rsp]
-	mov	rax,QWORD PTR[112+rsp]
-	lea	rsp,QWORD PTR[120+rsp]
+	lea	rsp,[rbp]
+	movaps	xmm6,XMMWORD[64+rbp]
+	movaps	xmm7,XMMWORD[80+rbp]
+	movaps	xmm8,XMMWORD[96+rbp]
+	movaps	xmm9,XMMWORD[112+rbp]
+	movaps	xmm10,XMMWORD[128+rbp]
+	movaps	xmm11,XMMWORD[144+rbp]
+	movaps	xmm12,XMMWORD[160+rbp]
+	movaps	xmm13,XMMWORD[176+rbp]
+	movaps	xmm14,XMMWORD[192+rbp]
+	movaps	xmm15,XMMWORD[208+rbp]
+	lea	rsp,[160+rbp]
+	mov	r15,QWORD[72+rsp]
+	mov	r14,QWORD[80+rsp]
+	mov	r13,QWORD[88+rsp]
+	mov	r12,QWORD[96+rsp]
+	mov	rbx,QWORD[104+rsp]
+	mov	rax,QWORD[112+rsp]
+	lea	rsp,[120+rsp]
 	mov	rbp,rax
-$L$cbc_dec_epilogue::
+$L$cbc_dec_epilogue:
 	DB	0F3h,0C3h		;repret
-bsaes_cbc_encrypt	ENDP
 
-PUBLIC	bsaes_ctr32_encrypt_blocks
+
+global	bsaes_ctr32_encrypt_blocks
 
 ALIGN	16
-bsaes_ctr32_encrypt_blocks	PROC PUBLIC
+bsaes_ctr32_encrypt_blocks:
 	mov	rax,rsp
-$L$ctr_enc_prologue::
+$L$ctr_enc_prologue:
 	push	rbp
 	push	rbx
 	push	r12
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-72))+rsp]
-	mov	r10,QWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[((-160))+rsp]
-	movaps	XMMWORD PTR[64+rsp],xmm6
-	movaps	XMMWORD PTR[80+rsp],xmm7
-	movaps	XMMWORD PTR[96+rsp],xmm8
-	movaps	XMMWORD PTR[112+rsp],xmm9
-	movaps	XMMWORD PTR[128+rsp],xmm10
-	movaps	XMMWORD PTR[144+rsp],xmm11
-	movaps	XMMWORD PTR[160+rsp],xmm12
-	movaps	XMMWORD PTR[176+rsp],xmm13
-	movaps	XMMWORD PTR[192+rsp],xmm14
-	movaps	XMMWORD PTR[208+rsp],xmm15
-$L$ctr_enc_body::
+	lea	rsp,[((-72))+rsp]
+	mov	r10,QWORD[160+rsp]
+	lea	rsp,[((-160))+rsp]
+	movaps	XMMWORD[64+rsp],xmm6
+	movaps	XMMWORD[80+rsp],xmm7
+	movaps	XMMWORD[96+rsp],xmm8
+	movaps	XMMWORD[112+rsp],xmm9
+	movaps	XMMWORD[128+rsp],xmm10
+	movaps	XMMWORD[144+rsp],xmm11
+	movaps	XMMWORD[160+rsp],xmm12
+	movaps	XMMWORD[176+rsp],xmm13
+	movaps	XMMWORD[192+rsp],xmm14
+	movaps	XMMWORD[208+rsp],xmm15
+$L$ctr_enc_body:
 	mov	rbp,rsp
-	movdqu	xmm0,XMMWORD PTR[r10]
-	mov	eax,DWORD PTR[240+r9]
+	movdqu	xmm0,XMMWORD[r10]
+	mov	eax,DWORD[240+r9]
 	mov	r12,rcx
 	mov	r13,rdx
 	mov	r14,r8
 	mov	r15,r9
-	movdqa	XMMWORD PTR[32+rbp],xmm0
+	movdqa	XMMWORD[32+rbp],xmm0
 	cmp	r8,8
-	jb	$L$ctr_enc_short
+	jb	NEAR $L$ctr_enc_short
 
 	mov	ebx,eax
 	shl	rax,7
@@ -1386,39 +1390,39 @@
 	mov	r10d,ebx
 	call	_bsaes_key_convert
 	pxor	xmm7,xmm6
-	movdqa	XMMWORD PTR[rax],xmm7
+	movdqa	XMMWORD[rax],xmm7
 
-	movdqa	xmm8,XMMWORD PTR[rsp]
-	lea	r11,QWORD PTR[$L$ADD1]
-	movdqa	xmm15,XMMWORD PTR[32+rbp]
-	movdqa	xmm7,XMMWORD PTR[((-32))+r11]
+	movdqa	xmm8,XMMWORD[rsp]
+	lea	r11,[$L$ADD1]
+	movdqa	xmm15,XMMWORD[32+rbp]
+	movdqa	xmm7,XMMWORD[((-32))+r11]
 DB	102,68,15,56,0,199
 DB	102,68,15,56,0,255
-	movdqa	XMMWORD PTR[rsp],xmm8
-	jmp	$L$ctr_enc_loop
+	movdqa	XMMWORD[rsp],xmm8
+	jmp	NEAR $L$ctr_enc_loop
 ALIGN	16
-$L$ctr_enc_loop::
-	movdqa	XMMWORD PTR[32+rbp],xmm15
+$L$ctr_enc_loop:
+	movdqa	XMMWORD[32+rbp],xmm15
 	movdqa	xmm0,xmm15
 	movdqa	xmm1,xmm15
-	paddd	xmm0,XMMWORD PTR[r11]
+	paddd	xmm0,XMMWORD[r11]
 	movdqa	xmm2,xmm15
-	paddd	xmm1,XMMWORD PTR[16+r11]
+	paddd	xmm1,XMMWORD[16+r11]
 	movdqa	xmm3,xmm15
-	paddd	xmm2,XMMWORD PTR[32+r11]
+	paddd	xmm2,XMMWORD[32+r11]
 	movdqa	xmm4,xmm15
-	paddd	xmm3,XMMWORD PTR[48+r11]
+	paddd	xmm3,XMMWORD[48+r11]
 	movdqa	xmm5,xmm15
-	paddd	xmm4,XMMWORD PTR[64+r11]
+	paddd	xmm4,XMMWORD[64+r11]
 	movdqa	xmm6,xmm15
-	paddd	xmm5,XMMWORD PTR[80+r11]
-	paddd	xmm6,XMMWORD PTR[96+r11]
+	paddd	xmm5,XMMWORD[80+r11]
+	paddd	xmm6,XMMWORD[96+r11]
 
 
 
-	movdqa	xmm8,XMMWORD PTR[rsp]
-	lea	rax,QWORD PTR[16+rsp]
-	movdqa	xmm7,XMMWORD PTR[((-16))+r11]
+	movdqa	xmm8,XMMWORD[rsp]
+	lea	rax,[16+rsp]
+	movdqa	xmm7,XMMWORD[((-16))+r11]
 	pxor	xmm15,xmm8
 	pxor	xmm0,xmm8
 	pxor	xmm1,xmm8
@@ -1435,172 +1439,172 @@
 DB	102,15,56,0,231
 DB	102,15,56,0,239
 DB	102,15,56,0,247
-	lea	r11,QWORD PTR[$L$BS0]
+	lea	r11,[$L$BS0]
 	mov	r10d,ebx
 
 	call	_bsaes_encrypt8_bitslice
 
 	sub	r14,8
-	jc	$L$ctr_enc_loop_done
+	jc	NEAR $L$ctr_enc_loop_done
 
-	movdqu	xmm7,XMMWORD PTR[r12]
-	movdqu	xmm8,XMMWORD PTR[16+r12]
-	movdqu	xmm9,XMMWORD PTR[32+r12]
-	movdqu	xmm10,XMMWORD PTR[48+r12]
-	movdqu	xmm11,XMMWORD PTR[64+r12]
-	movdqu	xmm12,XMMWORD PTR[80+r12]
-	movdqu	xmm13,XMMWORD PTR[96+r12]
-	movdqu	xmm14,XMMWORD PTR[112+r12]
-	lea	r12,QWORD PTR[128+r12]
+	movdqu	xmm7,XMMWORD[r12]
+	movdqu	xmm8,XMMWORD[16+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
+	movdqu	xmm13,XMMWORD[96+r12]
+	movdqu	xmm14,XMMWORD[112+r12]
+	lea	r12,[128+r12]
 	pxor	xmm7,xmm15
-	movdqa	xmm15,XMMWORD PTR[32+rbp]
+	movdqa	xmm15,XMMWORD[32+rbp]
 	pxor	xmm0,xmm8
-	movdqu	XMMWORD PTR[r13],xmm7
+	movdqu	XMMWORD[r13],xmm7
 	pxor	xmm3,xmm9
-	movdqu	XMMWORD PTR[16+r13],xmm0
+	movdqu	XMMWORD[16+r13],xmm0
 	pxor	xmm5,xmm10
-	movdqu	XMMWORD PTR[32+r13],xmm3
+	movdqu	XMMWORD[32+r13],xmm3
 	pxor	xmm2,xmm11
-	movdqu	XMMWORD PTR[48+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm5
 	pxor	xmm6,xmm12
-	movdqu	XMMWORD PTR[64+r13],xmm2
+	movdqu	XMMWORD[64+r13],xmm2
 	pxor	xmm1,xmm13
-	movdqu	XMMWORD PTR[80+r13],xmm6
+	movdqu	XMMWORD[80+r13],xmm6
 	pxor	xmm4,xmm14
-	movdqu	XMMWORD PTR[96+r13],xmm1
-	lea	r11,QWORD PTR[$L$ADD1]
-	movdqu	XMMWORD PTR[112+r13],xmm4
-	lea	r13,QWORD PTR[128+r13]
-	paddd	xmm15,XMMWORD PTR[112+r11]
-	jnz	$L$ctr_enc_loop
+	movdqu	XMMWORD[96+r13],xmm1
+	lea	r11,[$L$ADD1]
+	movdqu	XMMWORD[112+r13],xmm4
+	lea	r13,[128+r13]
+	paddd	xmm15,XMMWORD[112+r11]
+	jnz	NEAR $L$ctr_enc_loop
 
-	jmp	$L$ctr_enc_done
+	jmp	NEAR $L$ctr_enc_done
 ALIGN	16
-$L$ctr_enc_loop_done::
+$L$ctr_enc_loop_done:
 	add	r14,8
-	movdqu	xmm7,XMMWORD PTR[r12]
+	movdqu	xmm7,XMMWORD[r12]
 	pxor	xmm15,xmm7
-	movdqu	XMMWORD PTR[r13],xmm15
+	movdqu	XMMWORD[r13],xmm15
 	cmp	r14,2
-	jb	$L$ctr_enc_done
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	jb	NEAR $L$ctr_enc_done
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm0,xmm8
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	je	$L$ctr_enc_done
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	XMMWORD[16+r13],xmm0
+	je	NEAR $L$ctr_enc_done
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm3,xmm9
-	movdqu	XMMWORD PTR[32+r13],xmm3
+	movdqu	XMMWORD[32+r13],xmm3
 	cmp	r14,4
-	jb	$L$ctr_enc_done
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	jb	NEAR $L$ctr_enc_done
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm5,xmm10
-	movdqu	XMMWORD PTR[48+r13],xmm5
-	je	$L$ctr_enc_done
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	XMMWORD[48+r13],xmm5
+	je	NEAR $L$ctr_enc_done
+	movdqu	xmm11,XMMWORD[64+r12]
 	pxor	xmm2,xmm11
-	movdqu	XMMWORD PTR[64+r13],xmm2
+	movdqu	XMMWORD[64+r13],xmm2
 	cmp	r14,6
-	jb	$L$ctr_enc_done
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	jb	NEAR $L$ctr_enc_done
+	movdqu	xmm12,XMMWORD[80+r12]
 	pxor	xmm6,xmm12
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	je	$L$ctr_enc_done
-	movdqu	xmm13,XMMWORD PTR[96+r12]
+	movdqu	XMMWORD[80+r13],xmm6
+	je	NEAR $L$ctr_enc_done
+	movdqu	xmm13,XMMWORD[96+r12]
 	pxor	xmm1,xmm13
-	movdqu	XMMWORD PTR[96+r13],xmm1
-	jmp	$L$ctr_enc_done
+	movdqu	XMMWORD[96+r13],xmm1
+	jmp	NEAR $L$ctr_enc_done
 
 ALIGN	16
-$L$ctr_enc_short::
-	lea	rcx,QWORD PTR[32+rbp]
-	lea	rdx,QWORD PTR[48+rbp]
-	lea	r8,QWORD PTR[r15]
+$L$ctr_enc_short:
+	lea	rcx,[32+rbp]
+	lea	rdx,[48+rbp]
+	lea	r8,[r15]
 	call	asm_AES_encrypt
-	movdqu	xmm0,XMMWORD PTR[r12]
-	lea	r12,QWORD PTR[16+r12]
-	mov	eax,DWORD PTR[44+rbp]
+	movdqu	xmm0,XMMWORD[r12]
+	lea	r12,[16+r12]
+	mov	eax,DWORD[44+rbp]
 	bswap	eax
-	pxor	xmm0,XMMWORD PTR[48+rbp]
+	pxor	xmm0,XMMWORD[48+rbp]
 	inc	eax
-	movdqu	XMMWORD PTR[r13],xmm0
+	movdqu	XMMWORD[r13],xmm0
 	bswap	eax
-	lea	r13,QWORD PTR[16+r13]
-	mov	DWORD PTR[44+rsp],eax
+	lea	r13,[16+r13]
+	mov	DWORD[44+rsp],eax
 	dec	r14
-	jnz	$L$ctr_enc_short
+	jnz	NEAR $L$ctr_enc_short
 
-$L$ctr_enc_done::
-	lea	rax,QWORD PTR[rsp]
+$L$ctr_enc_done:
+	lea	rax,[rsp]
 	pxor	xmm0,xmm0
-$L$ctr_enc_bzero::
-	movdqa	XMMWORD PTR[rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm0
-	lea	rax,QWORD PTR[32+rax]
+$L$ctr_enc_bzero:
+	movdqa	XMMWORD[rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm0
+	lea	rax,[32+rax]
 	cmp	rbp,rax
-	ja	$L$ctr_enc_bzero
+	ja	NEAR $L$ctr_enc_bzero
 
-	lea	rsp,QWORD PTR[rbp]
-	movaps	xmm6,XMMWORD PTR[64+rbp]
-	movaps	xmm7,XMMWORD PTR[80+rbp]
-	movaps	xmm8,XMMWORD PTR[96+rbp]
-	movaps	xmm9,XMMWORD PTR[112+rbp]
-	movaps	xmm10,XMMWORD PTR[128+rbp]
-	movaps	xmm11,XMMWORD PTR[144+rbp]
-	movaps	xmm12,XMMWORD PTR[160+rbp]
-	movaps	xmm13,XMMWORD PTR[176+rbp]
-	movaps	xmm14,XMMWORD PTR[192+rbp]
-	movaps	xmm15,XMMWORD PTR[208+rbp]
-	lea	rsp,QWORD PTR[160+rbp]
-	mov	r15,QWORD PTR[72+rsp]
-	mov	r14,QWORD PTR[80+rsp]
-	mov	r13,QWORD PTR[88+rsp]
-	mov	r12,QWORD PTR[96+rsp]
-	mov	rbx,QWORD PTR[104+rsp]
-	mov	rax,QWORD PTR[112+rsp]
-	lea	rsp,QWORD PTR[120+rsp]
+	lea	rsp,[rbp]
+	movaps	xmm6,XMMWORD[64+rbp]
+	movaps	xmm7,XMMWORD[80+rbp]
+	movaps	xmm8,XMMWORD[96+rbp]
+	movaps	xmm9,XMMWORD[112+rbp]
+	movaps	xmm10,XMMWORD[128+rbp]
+	movaps	xmm11,XMMWORD[144+rbp]
+	movaps	xmm12,XMMWORD[160+rbp]
+	movaps	xmm13,XMMWORD[176+rbp]
+	movaps	xmm14,XMMWORD[192+rbp]
+	movaps	xmm15,XMMWORD[208+rbp]
+	lea	rsp,[160+rbp]
+	mov	r15,QWORD[72+rsp]
+	mov	r14,QWORD[80+rsp]
+	mov	r13,QWORD[88+rsp]
+	mov	r12,QWORD[96+rsp]
+	mov	rbx,QWORD[104+rsp]
+	mov	rax,QWORD[112+rsp]
+	lea	rsp,[120+rsp]
 	mov	rbp,rax
-$L$ctr_enc_epilogue::
+$L$ctr_enc_epilogue:
 	DB	0F3h,0C3h		;repret
-bsaes_ctr32_encrypt_blocks	ENDP
-PUBLIC	bsaes_xts_encrypt
+
+global	bsaes_xts_encrypt
 
 ALIGN	16
-bsaes_xts_encrypt	PROC PUBLIC
+bsaes_xts_encrypt:
 	mov	rax,rsp
-$L$xts_enc_prologue::
+$L$xts_enc_prologue:
 	push	rbp
 	push	rbx
 	push	r12
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-72))+rsp]
-	mov	r10,QWORD PTR[160+rsp]
-	mov	r11,QWORD PTR[168+rsp]
-	lea	rsp,QWORD PTR[((-160))+rsp]
-	movaps	XMMWORD PTR[64+rsp],xmm6
-	movaps	XMMWORD PTR[80+rsp],xmm7
-	movaps	XMMWORD PTR[96+rsp],xmm8
-	movaps	XMMWORD PTR[112+rsp],xmm9
-	movaps	XMMWORD PTR[128+rsp],xmm10
-	movaps	XMMWORD PTR[144+rsp],xmm11
-	movaps	XMMWORD PTR[160+rsp],xmm12
-	movaps	XMMWORD PTR[176+rsp],xmm13
-	movaps	XMMWORD PTR[192+rsp],xmm14
-	movaps	XMMWORD PTR[208+rsp],xmm15
-$L$xts_enc_body::
+	lea	rsp,[((-72))+rsp]
+	mov	r10,QWORD[160+rsp]
+	mov	r11,QWORD[168+rsp]
+	lea	rsp,[((-160))+rsp]
+	movaps	XMMWORD[64+rsp],xmm6
+	movaps	XMMWORD[80+rsp],xmm7
+	movaps	XMMWORD[96+rsp],xmm8
+	movaps	XMMWORD[112+rsp],xmm9
+	movaps	XMMWORD[128+rsp],xmm10
+	movaps	XMMWORD[144+rsp],xmm11
+	movaps	XMMWORD[160+rsp],xmm12
+	movaps	XMMWORD[176+rsp],xmm13
+	movaps	XMMWORD[192+rsp],xmm14
+	movaps	XMMWORD[208+rsp],xmm15
+$L$xts_enc_body:
 	mov	rbp,rsp
 	mov	r12,rcx
 	mov	r13,rdx
 	mov	r14,r8
 	mov	r15,r9
 
-	lea	rcx,QWORD PTR[r11]
-	lea	rdx,QWORD PTR[32+rbp]
-	lea	r8,QWORD PTR[r10]
+	lea	rcx,[r11]
+	lea	rdx,[32+rbp]
+	lea	r8,[r10]
 	call	asm_AES_encrypt
 
-	mov	eax,DWORD PTR[240+r15]
+	mov	eax,DWORD[240+r15]
 	mov	rbx,r14
 
 	mov	edx,eax
@@ -1613,471 +1617,471 @@
 	mov	r10d,edx
 	call	_bsaes_key_convert
 	pxor	xmm7,xmm6
-	movdqa	XMMWORD PTR[rax],xmm7
+	movdqa	XMMWORD[rax],xmm7
 
 	and	r14,-16
-	sub	rsp,080h
-	movdqa	xmm6,XMMWORD PTR[32+rbp]
+	sub	rsp,0x80
+	movdqa	xmm6,XMMWORD[32+rbp]
 
 	pxor	xmm14,xmm14
-	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm12,XMMWORD[$L$xts_magic]
 	pcmpgtd	xmm14,xmm6
 
-	sub	r14,080h
-	jc	$L$xts_enc_short
-	jmp	$L$xts_enc_loop
+	sub	r14,0x80
+	jc	NEAR $L$xts_enc_short
+	jmp	NEAR $L$xts_enc_loop
 
 ALIGN	16
-$L$xts_enc_loop::
-	pshufd	xmm13,xmm14,013h
+$L$xts_enc_loop:
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm15,xmm6
-	movdqa	XMMWORD PTR[rsp],xmm6
+	movdqa	XMMWORD[rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm0,xmm6
-	movdqa	XMMWORD PTR[16+rsp],xmm6
+	movdqa	XMMWORD[16+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm7,XMMWORD PTR[r12]
-	pshufd	xmm13,xmm14,013h
+	movdqu	xmm7,XMMWORD[r12]
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm1,xmm6
-	movdqa	XMMWORD PTR[32+rsp],xmm6
+	movdqa	XMMWORD[32+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm15,xmm7
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm2,xmm6
-	movdqa	XMMWORD PTR[48+rsp],xmm6
+	movdqa	XMMWORD[48+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm0,xmm8
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm3,xmm6
-	movdqa	XMMWORD PTR[64+rsp],xmm6
+	movdqa	XMMWORD[64+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm1,xmm9
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm4,xmm6
-	movdqa	XMMWORD PTR[80+rsp],xmm6
+	movdqa	XMMWORD[80+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	pxor	xmm2,xmm10
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm5,xmm6
-	movdqa	XMMWORD PTR[96+rsp],xmm6
+	movdqa	XMMWORD[96+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
 	pxor	xmm3,xmm11
-	movdqu	xmm13,XMMWORD PTR[96+r12]
+	movdqu	xmm13,XMMWORD[96+r12]
 	pxor	xmm4,xmm12
-	movdqu	xmm14,XMMWORD PTR[112+r12]
-	lea	r12,QWORD PTR[128+r12]
-	movdqa	XMMWORD PTR[112+rsp],xmm6
+	movdqu	xmm14,XMMWORD[112+r12]
+	lea	r12,[128+r12]
+	movdqa	XMMWORD[112+rsp],xmm6
 	pxor	xmm5,xmm13
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	pxor	xmm6,xmm14
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm3,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm5,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm3
-	pxor	xmm2,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm5
-	pxor	xmm6,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[64+r13],xmm2
-	pxor	xmm1,XMMWORD PTR[96+rsp]
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	pxor	xmm4,XMMWORD PTR[112+rsp]
-	movdqu	XMMWORD PTR[96+r13],xmm1
-	movdqu	XMMWORD PTR[112+r13],xmm4
-	lea	r13,QWORD PTR[128+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm3,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm5,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm3
+	pxor	xmm2,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm5
+	pxor	xmm6,XMMWORD[80+rsp]
+	movdqu	XMMWORD[64+r13],xmm2
+	pxor	xmm1,XMMWORD[96+rsp]
+	movdqu	XMMWORD[80+r13],xmm6
+	pxor	xmm4,XMMWORD[112+rsp]
+	movdqu	XMMWORD[96+r13],xmm1
+	movdqu	XMMWORD[112+r13],xmm4
+	lea	r13,[128+r13]
 
-	movdqa	xmm6,XMMWORD PTR[112+rsp]
+	movdqa	xmm6,XMMWORD[112+rsp]
 	pxor	xmm14,xmm14
-	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm12,XMMWORD[$L$xts_magic]
 	pcmpgtd	xmm14,xmm6
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
 
-	sub	r14,080h
-	jnc	$L$xts_enc_loop
+	sub	r14,0x80
+	jnc	NEAR $L$xts_enc_loop
 
-$L$xts_enc_short::
-	add	r14,080h
-	jz	$L$xts_enc_done
-	pshufd	xmm13,xmm14,013h
+$L$xts_enc_short:
+	add	r14,0x80
+	jz	NEAR $L$xts_enc_done
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm15,xmm6
-	movdqa	XMMWORD PTR[rsp],xmm6
+	movdqa	XMMWORD[rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm0,xmm6
-	movdqa	XMMWORD PTR[16+rsp],xmm6
+	movdqa	XMMWORD[16+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm7,XMMWORD PTR[r12]
+	movdqu	xmm7,XMMWORD[r12]
 	cmp	r14,16
-	je	$L$xts_enc_1
-	pshufd	xmm13,xmm14,013h
+	je	NEAR $L$xts_enc_1
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm1,xmm6
-	movdqa	XMMWORD PTR[32+rsp],xmm6
+	movdqa	XMMWORD[32+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	cmp	r14,32
-	je	$L$xts_enc_2
+	je	NEAR $L$xts_enc_2
 	pxor	xmm15,xmm7
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm2,xmm6
-	movdqa	XMMWORD PTR[48+rsp],xmm6
+	movdqa	XMMWORD[48+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	cmp	r14,48
-	je	$L$xts_enc_3
+	je	NEAR $L$xts_enc_3
 	pxor	xmm0,xmm8
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm3,xmm6
-	movdqa	XMMWORD PTR[64+rsp],xmm6
+	movdqa	XMMWORD[64+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	cmp	r14,64
-	je	$L$xts_enc_4
+	je	NEAR $L$xts_enc_4
 	pxor	xmm1,xmm9
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm4,xmm6
-	movdqa	XMMWORD PTR[80+rsp],xmm6
+	movdqa	XMMWORD[80+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	cmp	r14,80
-	je	$L$xts_enc_5
+	je	NEAR $L$xts_enc_5
 	pxor	xmm2,xmm10
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm5,xmm6
-	movdqa	XMMWORD PTR[96+rsp],xmm6
+	movdqa	XMMWORD[96+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
 	cmp	r14,96
-	je	$L$xts_enc_6
+	je	NEAR $L$xts_enc_6
 	pxor	xmm3,xmm11
-	movdqu	xmm13,XMMWORD PTR[96+r12]
+	movdqu	xmm13,XMMWORD[96+r12]
 	pxor	xmm4,xmm12
-	movdqa	XMMWORD PTR[112+rsp],xmm6
-	lea	r12,QWORD PTR[112+r12]
+	movdqa	XMMWORD[112+rsp],xmm6
+	lea	r12,[112+r12]
 	pxor	xmm5,xmm13
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm3,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm5,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm3
-	pxor	xmm2,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm5
-	pxor	xmm6,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[64+r13],xmm2
-	pxor	xmm1,XMMWORD PTR[96+rsp]
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	movdqu	XMMWORD PTR[96+r13],xmm1
-	lea	r13,QWORD PTR[112+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm3,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm5,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm3
+	pxor	xmm2,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm5
+	pxor	xmm6,XMMWORD[80+rsp]
+	movdqu	XMMWORD[64+r13],xmm2
+	pxor	xmm1,XMMWORD[96+rsp]
+	movdqu	XMMWORD[80+r13],xmm6
+	movdqu	XMMWORD[96+r13],xmm1
+	lea	r13,[112+r13]
 
-	movdqa	xmm6,XMMWORD PTR[112+rsp]
-	jmp	$L$xts_enc_done
+	movdqa	xmm6,XMMWORD[112+rsp]
+	jmp	NEAR $L$xts_enc_done
 ALIGN	16
-$L$xts_enc_6::
+$L$xts_enc_6:
 	pxor	xmm3,xmm11
-	lea	r12,QWORD PTR[96+r12]
+	lea	r12,[96+r12]
 	pxor	xmm4,xmm12
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm3,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm5,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm3
-	pxor	xmm2,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm5
-	pxor	xmm6,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[64+r13],xmm2
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	lea	r13,QWORD PTR[96+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm3,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm5,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm3
+	pxor	xmm2,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm5
+	pxor	xmm6,XMMWORD[80+rsp]
+	movdqu	XMMWORD[64+r13],xmm2
+	movdqu	XMMWORD[80+r13],xmm6
+	lea	r13,[96+r13]
 
-	movdqa	xmm6,XMMWORD PTR[96+rsp]
-	jmp	$L$xts_enc_done
+	movdqa	xmm6,XMMWORD[96+rsp]
+	jmp	NEAR $L$xts_enc_done
 ALIGN	16
-$L$xts_enc_5::
+$L$xts_enc_5:
 	pxor	xmm2,xmm10
-	lea	r12,QWORD PTR[80+r12]
+	lea	r12,[80+r12]
 	pxor	xmm3,xmm11
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm3,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm5,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm3
-	pxor	xmm2,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm5
-	movdqu	XMMWORD PTR[64+r13],xmm2
-	lea	r13,QWORD PTR[80+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm3,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm5,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm3
+	pxor	xmm2,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm5
+	movdqu	XMMWORD[64+r13],xmm2
+	lea	r13,[80+r13]
 
-	movdqa	xmm6,XMMWORD PTR[80+rsp]
-	jmp	$L$xts_enc_done
+	movdqa	xmm6,XMMWORD[80+rsp]
+	jmp	NEAR $L$xts_enc_done
 ALIGN	16
-$L$xts_enc_4::
+$L$xts_enc_4:
 	pxor	xmm1,xmm9
-	lea	r12,QWORD PTR[64+r12]
+	lea	r12,[64+r12]
 	pxor	xmm2,xmm10
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm3,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm5,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm3
-	movdqu	XMMWORD PTR[48+r13],xmm5
-	lea	r13,QWORD PTR[64+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm3,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm5,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm3
+	movdqu	XMMWORD[48+r13],xmm5
+	lea	r13,[64+r13]
 
-	movdqa	xmm6,XMMWORD PTR[64+rsp]
-	jmp	$L$xts_enc_done
+	movdqa	xmm6,XMMWORD[64+rsp]
+	jmp	NEAR $L$xts_enc_done
 ALIGN	16
-$L$xts_enc_3::
+$L$xts_enc_3:
 	pxor	xmm0,xmm8
-	lea	r12,QWORD PTR[48+r12]
+	lea	r12,[48+r12]
 	pxor	xmm1,xmm9
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm3,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm3
-	lea	r13,QWORD PTR[48+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm3,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm3
+	lea	r13,[48+r13]
 
-	movdqa	xmm6,XMMWORD PTR[48+rsp]
-	jmp	$L$xts_enc_done
+	movdqa	xmm6,XMMWORD[48+rsp]
+	jmp	NEAR $L$xts_enc_done
 ALIGN	16
-$L$xts_enc_2::
+$L$xts_enc_2:
 	pxor	xmm15,xmm7
-	lea	r12,QWORD PTR[32+r12]
+	lea	r12,[32+r12]
 	pxor	xmm0,xmm8
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_encrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	lea	r13,QWORD PTR[32+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	lea	r13,[32+r13]
 
-	movdqa	xmm6,XMMWORD PTR[32+rsp]
-	jmp	$L$xts_enc_done
+	movdqa	xmm6,XMMWORD[32+rsp]
+	jmp	NEAR $L$xts_enc_done
 ALIGN	16
-$L$xts_enc_1::
+$L$xts_enc_1:
 	pxor	xmm7,xmm15
-	lea	r12,QWORD PTR[16+r12]
-	movdqa	XMMWORD PTR[32+rbp],xmm7
-	lea	rcx,QWORD PTR[32+rbp]
-	lea	rdx,QWORD PTR[32+rbp]
-	lea	r8,QWORD PTR[r15]
+	lea	r12,[16+r12]
+	movdqa	XMMWORD[32+rbp],xmm7
+	lea	rcx,[32+rbp]
+	lea	rdx,[32+rbp]
+	lea	r8,[r15]
 	call	asm_AES_encrypt
-	pxor	xmm15,XMMWORD PTR[32+rbp]
+	pxor	xmm15,XMMWORD[32+rbp]
 
 
 
 
 
-	movdqu	XMMWORD PTR[r13],xmm15
-	lea	r13,QWORD PTR[16+r13]
+	movdqu	XMMWORD[r13],xmm15
+	lea	r13,[16+r13]
 
-	movdqa	xmm6,XMMWORD PTR[16+rsp]
+	movdqa	xmm6,XMMWORD[16+rsp]
 
-$L$xts_enc_done::
+$L$xts_enc_done:
 	and	ebx,15
-	jz	$L$xts_enc_ret
+	jz	NEAR $L$xts_enc_ret
 	mov	rdx,r13
 
-$L$xts_enc_steal::
-	movzx	eax,BYTE PTR[r12]
-	movzx	ecx,BYTE PTR[((-16))+rdx]
-	lea	r12,QWORD PTR[1+r12]
-	mov	BYTE PTR[((-16))+rdx],al
-	mov	BYTE PTR[rdx],cl
-	lea	rdx,QWORD PTR[1+rdx]
+$L$xts_enc_steal:
+	movzx	eax,BYTE[r12]
+	movzx	ecx,BYTE[((-16))+rdx]
+	lea	r12,[1+r12]
+	mov	BYTE[((-16))+rdx],al
+	mov	BYTE[rdx],cl
+	lea	rdx,[1+rdx]
 	sub	ebx,1
-	jnz	$L$xts_enc_steal
+	jnz	NEAR $L$xts_enc_steal
 
-	movdqu	xmm15,XMMWORD PTR[((-16))+r13]
-	lea	rcx,QWORD PTR[32+rbp]
+	movdqu	xmm15,XMMWORD[((-16))+r13]
+	lea	rcx,[32+rbp]
 	pxor	xmm15,xmm6
-	lea	rdx,QWORD PTR[32+rbp]
-	movdqa	XMMWORD PTR[32+rbp],xmm15
-	lea	r8,QWORD PTR[r15]
+	lea	rdx,[32+rbp]
+	movdqa	XMMWORD[32+rbp],xmm15
+	lea	r8,[r15]
 	call	asm_AES_encrypt
-	pxor	xmm6,XMMWORD PTR[32+rbp]
-	movdqu	XMMWORD PTR[(-16)+r13],xmm6
+	pxor	xmm6,XMMWORD[32+rbp]
+	movdqu	XMMWORD[(-16)+r13],xmm6
 
-$L$xts_enc_ret::
-	lea	rax,QWORD PTR[rsp]
+$L$xts_enc_ret:
+	lea	rax,[rsp]
 	pxor	xmm0,xmm0
-$L$xts_enc_bzero::
-	movdqa	XMMWORD PTR[rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm0
-	lea	rax,QWORD PTR[32+rax]
+$L$xts_enc_bzero:
+	movdqa	XMMWORD[rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm0
+	lea	rax,[32+rax]
 	cmp	rbp,rax
-	ja	$L$xts_enc_bzero
+	ja	NEAR $L$xts_enc_bzero
 
-	lea	rsp,QWORD PTR[rbp]
-	movaps	xmm6,XMMWORD PTR[64+rbp]
-	movaps	xmm7,XMMWORD PTR[80+rbp]
-	movaps	xmm8,XMMWORD PTR[96+rbp]
-	movaps	xmm9,XMMWORD PTR[112+rbp]
-	movaps	xmm10,XMMWORD PTR[128+rbp]
-	movaps	xmm11,XMMWORD PTR[144+rbp]
-	movaps	xmm12,XMMWORD PTR[160+rbp]
-	movaps	xmm13,XMMWORD PTR[176+rbp]
-	movaps	xmm14,XMMWORD PTR[192+rbp]
-	movaps	xmm15,XMMWORD PTR[208+rbp]
-	lea	rsp,QWORD PTR[160+rbp]
-	mov	r15,QWORD PTR[72+rsp]
-	mov	r14,QWORD PTR[80+rsp]
-	mov	r13,QWORD PTR[88+rsp]
-	mov	r12,QWORD PTR[96+rsp]
-	mov	rbx,QWORD PTR[104+rsp]
-	mov	rax,QWORD PTR[112+rsp]
-	lea	rsp,QWORD PTR[120+rsp]
+	lea	rsp,[rbp]
+	movaps	xmm6,XMMWORD[64+rbp]
+	movaps	xmm7,XMMWORD[80+rbp]
+	movaps	xmm8,XMMWORD[96+rbp]
+	movaps	xmm9,XMMWORD[112+rbp]
+	movaps	xmm10,XMMWORD[128+rbp]
+	movaps	xmm11,XMMWORD[144+rbp]
+	movaps	xmm12,XMMWORD[160+rbp]
+	movaps	xmm13,XMMWORD[176+rbp]
+	movaps	xmm14,XMMWORD[192+rbp]
+	movaps	xmm15,XMMWORD[208+rbp]
+	lea	rsp,[160+rbp]
+	mov	r15,QWORD[72+rsp]
+	mov	r14,QWORD[80+rsp]
+	mov	r13,QWORD[88+rsp]
+	mov	r12,QWORD[96+rsp]
+	mov	rbx,QWORD[104+rsp]
+	mov	rax,QWORD[112+rsp]
+	lea	rsp,[120+rsp]
 	mov	rbp,rax
-$L$xts_enc_epilogue::
+$L$xts_enc_epilogue:
 	DB	0F3h,0C3h		;repret
-bsaes_xts_encrypt	ENDP
 
-PUBLIC	bsaes_xts_decrypt
+
+global	bsaes_xts_decrypt
 
 ALIGN	16
-bsaes_xts_decrypt	PROC PUBLIC
+bsaes_xts_decrypt:
 	mov	rax,rsp
-$L$xts_dec_prologue::
+$L$xts_dec_prologue:
 	push	rbp
 	push	rbx
 	push	r12
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-72))+rsp]
-	mov	r10,QWORD PTR[160+rsp]
-	mov	r11,QWORD PTR[168+rsp]
-	lea	rsp,QWORD PTR[((-160))+rsp]
-	movaps	XMMWORD PTR[64+rsp],xmm6
-	movaps	XMMWORD PTR[80+rsp],xmm7
-	movaps	XMMWORD PTR[96+rsp],xmm8
-	movaps	XMMWORD PTR[112+rsp],xmm9
-	movaps	XMMWORD PTR[128+rsp],xmm10
-	movaps	XMMWORD PTR[144+rsp],xmm11
-	movaps	XMMWORD PTR[160+rsp],xmm12
-	movaps	XMMWORD PTR[176+rsp],xmm13
-	movaps	XMMWORD PTR[192+rsp],xmm14
-	movaps	XMMWORD PTR[208+rsp],xmm15
-$L$xts_dec_body::
+	lea	rsp,[((-72))+rsp]
+	mov	r10,QWORD[160+rsp]
+	mov	r11,QWORD[168+rsp]
+	lea	rsp,[((-160))+rsp]
+	movaps	XMMWORD[64+rsp],xmm6
+	movaps	XMMWORD[80+rsp],xmm7
+	movaps	XMMWORD[96+rsp],xmm8
+	movaps	XMMWORD[112+rsp],xmm9
+	movaps	XMMWORD[128+rsp],xmm10
+	movaps	XMMWORD[144+rsp],xmm11
+	movaps	XMMWORD[160+rsp],xmm12
+	movaps	XMMWORD[176+rsp],xmm13
+	movaps	XMMWORD[192+rsp],xmm14
+	movaps	XMMWORD[208+rsp],xmm15
+$L$xts_dec_body:
 	mov	rbp,rsp
 	mov	r12,rcx
 	mov	r13,rdx
 	mov	r14,r8
 	mov	r15,r9
 
-	lea	rcx,QWORD PTR[r11]
-	lea	rdx,QWORD PTR[32+rbp]
-	lea	r8,QWORD PTR[r10]
+	lea	rcx,[r11]
+	lea	rdx,[32+rbp]
+	lea	r8,[r10]
 	call	asm_AES_encrypt
 
-	mov	eax,DWORD PTR[240+r15]
+	mov	eax,DWORD[240+r15]
 	mov	rbx,r14
 
 	mov	edx,eax
@@ -2089,9 +2093,9 @@
 	mov	rcx,r15
 	mov	r10d,edx
 	call	_bsaes_key_convert
-	pxor	xmm7,XMMWORD PTR[rsp]
-	movdqa	XMMWORD PTR[rax],xmm6
-	movdqa	XMMWORD PTR[rsp],xmm7
+	pxor	xmm7,XMMWORD[rsp]
+	movdqa	XMMWORD[rax],xmm6
+	movdqa	XMMWORD[rsp],xmm7
 
 	xor	eax,eax
 	and	r14,-16
@@ -2100,499 +2104,499 @@
 	shl	rax,4
 	sub	r14,rax
 
-	sub	rsp,080h
-	movdqa	xmm6,XMMWORD PTR[32+rbp]
+	sub	rsp,0x80
+	movdqa	xmm6,XMMWORD[32+rbp]
 
 	pxor	xmm14,xmm14
-	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm12,XMMWORD[$L$xts_magic]
 	pcmpgtd	xmm14,xmm6
 
-	sub	r14,080h
-	jc	$L$xts_dec_short
-	jmp	$L$xts_dec_loop
+	sub	r14,0x80
+	jc	NEAR $L$xts_dec_short
+	jmp	NEAR $L$xts_dec_loop
 
 ALIGN	16
-$L$xts_dec_loop::
-	pshufd	xmm13,xmm14,013h
+$L$xts_dec_loop:
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm15,xmm6
-	movdqa	XMMWORD PTR[rsp],xmm6
+	movdqa	XMMWORD[rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm0,xmm6
-	movdqa	XMMWORD PTR[16+rsp],xmm6
+	movdqa	XMMWORD[16+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm7,XMMWORD PTR[r12]
-	pshufd	xmm13,xmm14,013h
+	movdqu	xmm7,XMMWORD[r12]
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm1,xmm6
-	movdqa	XMMWORD PTR[32+rsp],xmm6
+	movdqa	XMMWORD[32+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	pxor	xmm15,xmm7
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm2,xmm6
-	movdqa	XMMWORD PTR[48+rsp],xmm6
+	movdqa	XMMWORD[48+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	pxor	xmm0,xmm8
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm3,xmm6
-	movdqa	XMMWORD PTR[64+rsp],xmm6
+	movdqa	XMMWORD[64+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	pxor	xmm1,xmm9
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm4,xmm6
-	movdqa	XMMWORD PTR[80+rsp],xmm6
+	movdqa	XMMWORD[80+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	pxor	xmm2,xmm10
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm5,xmm6
-	movdqa	XMMWORD PTR[96+rsp],xmm6
+	movdqa	XMMWORD[96+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
 	pxor	xmm3,xmm11
-	movdqu	xmm13,XMMWORD PTR[96+r12]
+	movdqu	xmm13,XMMWORD[96+r12]
 	pxor	xmm4,xmm12
-	movdqu	xmm14,XMMWORD PTR[112+r12]
-	lea	r12,QWORD PTR[128+r12]
-	movdqa	XMMWORD PTR[112+rsp],xmm6
+	movdqu	xmm14,XMMWORD[112+r12]
+	lea	r12,[128+r12]
+	movdqa	XMMWORD[112+rsp],xmm6
 	pxor	xmm5,xmm13
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	pxor	xmm6,xmm14
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm5,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm3,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	pxor	xmm1,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	pxor	xmm6,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	pxor	xmm2,XMMWORD PTR[96+rsp]
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	pxor	xmm4,XMMWORD PTR[112+rsp]
-	movdqu	XMMWORD PTR[96+r13],xmm2
-	movdqu	XMMWORD PTR[112+r13],xmm4
-	lea	r13,QWORD PTR[128+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm5,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm3,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm5
+	pxor	xmm1,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm3
+	pxor	xmm6,XMMWORD[80+rsp]
+	movdqu	XMMWORD[64+r13],xmm1
+	pxor	xmm2,XMMWORD[96+rsp]
+	movdqu	XMMWORD[80+r13],xmm6
+	pxor	xmm4,XMMWORD[112+rsp]
+	movdqu	XMMWORD[96+r13],xmm2
+	movdqu	XMMWORD[112+r13],xmm4
+	lea	r13,[128+r13]
 
-	movdqa	xmm6,XMMWORD PTR[112+rsp]
+	movdqa	xmm6,XMMWORD[112+rsp]
 	pxor	xmm14,xmm14
-	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm12,XMMWORD[$L$xts_magic]
 	pcmpgtd	xmm14,xmm6
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
 
-	sub	r14,080h
-	jnc	$L$xts_dec_loop
+	sub	r14,0x80
+	jnc	NEAR $L$xts_dec_loop
 
-$L$xts_dec_short::
-	add	r14,080h
-	jz	$L$xts_dec_done
-	pshufd	xmm13,xmm14,013h
+$L$xts_dec_short:
+	add	r14,0x80
+	jz	NEAR $L$xts_dec_done
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm15,xmm6
-	movdqa	XMMWORD PTR[rsp],xmm6
+	movdqa	XMMWORD[rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm0,xmm6
-	movdqa	XMMWORD PTR[16+rsp],xmm6
+	movdqa	XMMWORD[16+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm7,XMMWORD PTR[r12]
+	movdqu	xmm7,XMMWORD[r12]
 	cmp	r14,16
-	je	$L$xts_dec_1
-	pshufd	xmm13,xmm14,013h
+	je	NEAR $L$xts_dec_1
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm1,xmm6
-	movdqa	XMMWORD PTR[32+rsp],xmm6
+	movdqa	XMMWORD[32+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm8,XMMWORD PTR[16+r12]
+	movdqu	xmm8,XMMWORD[16+r12]
 	cmp	r14,32
-	je	$L$xts_dec_2
+	je	NEAR $L$xts_dec_2
 	pxor	xmm15,xmm7
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm2,xmm6
-	movdqa	XMMWORD PTR[48+rsp],xmm6
+	movdqa	XMMWORD[48+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm9,XMMWORD PTR[32+r12]
+	movdqu	xmm9,XMMWORD[32+r12]
 	cmp	r14,48
-	je	$L$xts_dec_3
+	je	NEAR $L$xts_dec_3
 	pxor	xmm0,xmm8
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm3,xmm6
-	movdqa	XMMWORD PTR[64+rsp],xmm6
+	movdqa	XMMWORD[64+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm10,XMMWORD PTR[48+r12]
+	movdqu	xmm10,XMMWORD[48+r12]
 	cmp	r14,64
-	je	$L$xts_dec_4
+	je	NEAR $L$xts_dec_4
 	pxor	xmm1,xmm9
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm4,xmm6
-	movdqa	XMMWORD PTR[80+rsp],xmm6
+	movdqa	XMMWORD[80+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm11,XMMWORD PTR[64+r12]
+	movdqu	xmm11,XMMWORD[64+r12]
 	cmp	r14,80
-	je	$L$xts_dec_5
+	je	NEAR $L$xts_dec_5
 	pxor	xmm2,xmm10
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	pxor	xmm14,xmm14
 	movdqa	xmm5,xmm6
-	movdqa	XMMWORD PTR[96+rsp],xmm6
+	movdqa	XMMWORD[96+rsp],xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
 	pcmpgtd	xmm14,xmm6
 	pxor	xmm6,xmm13
-	movdqu	xmm12,XMMWORD PTR[80+r12]
+	movdqu	xmm12,XMMWORD[80+r12]
 	cmp	r14,96
-	je	$L$xts_dec_6
+	je	NEAR $L$xts_dec_6
 	pxor	xmm3,xmm11
-	movdqu	xmm13,XMMWORD PTR[96+r12]
+	movdqu	xmm13,XMMWORD[96+r12]
 	pxor	xmm4,xmm12
-	movdqa	XMMWORD PTR[112+rsp],xmm6
-	lea	r12,QWORD PTR[112+r12]
+	movdqa	XMMWORD[112+rsp],xmm6
+	lea	r12,[112+r12]
 	pxor	xmm5,xmm13
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm5,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm3,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	pxor	xmm1,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	pxor	xmm6,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	pxor	xmm2,XMMWORD PTR[96+rsp]
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	movdqu	XMMWORD PTR[96+r13],xmm2
-	lea	r13,QWORD PTR[112+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm5,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm3,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm5
+	pxor	xmm1,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm3
+	pxor	xmm6,XMMWORD[80+rsp]
+	movdqu	XMMWORD[64+r13],xmm1
+	pxor	xmm2,XMMWORD[96+rsp]
+	movdqu	XMMWORD[80+r13],xmm6
+	movdqu	XMMWORD[96+r13],xmm2
+	lea	r13,[112+r13]
 
-	movdqa	xmm6,XMMWORD PTR[112+rsp]
-	jmp	$L$xts_dec_done
+	movdqa	xmm6,XMMWORD[112+rsp]
+	jmp	NEAR $L$xts_dec_done
 ALIGN	16
-$L$xts_dec_6::
+$L$xts_dec_6:
 	pxor	xmm3,xmm11
-	lea	r12,QWORD PTR[96+r12]
+	lea	r12,[96+r12]
 	pxor	xmm4,xmm12
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm5,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm3,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	pxor	xmm1,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	pxor	xmm6,XMMWORD PTR[80+rsp]
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	movdqu	XMMWORD PTR[80+r13],xmm6
-	lea	r13,QWORD PTR[96+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm5,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm3,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm5
+	pxor	xmm1,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm3
+	pxor	xmm6,XMMWORD[80+rsp]
+	movdqu	XMMWORD[64+r13],xmm1
+	movdqu	XMMWORD[80+r13],xmm6
+	lea	r13,[96+r13]
 
-	movdqa	xmm6,XMMWORD PTR[96+rsp]
-	jmp	$L$xts_dec_done
+	movdqa	xmm6,XMMWORD[96+rsp]
+	jmp	NEAR $L$xts_dec_done
 ALIGN	16
-$L$xts_dec_5::
+$L$xts_dec_5:
 	pxor	xmm2,xmm10
-	lea	r12,QWORD PTR[80+r12]
+	lea	r12,[80+r12]
 	pxor	xmm3,xmm11
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm5,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm3,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	pxor	xmm1,XMMWORD PTR[64+rsp]
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	movdqu	XMMWORD PTR[64+r13],xmm1
-	lea	r13,QWORD PTR[80+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm5,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm3,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm5
+	pxor	xmm1,XMMWORD[64+rsp]
+	movdqu	XMMWORD[48+r13],xmm3
+	movdqu	XMMWORD[64+r13],xmm1
+	lea	r13,[80+r13]
 
-	movdqa	xmm6,XMMWORD PTR[80+rsp]
-	jmp	$L$xts_dec_done
+	movdqa	xmm6,XMMWORD[80+rsp]
+	jmp	NEAR $L$xts_dec_done
 ALIGN	16
-$L$xts_dec_4::
+$L$xts_dec_4:
 	pxor	xmm1,xmm9
-	lea	r12,QWORD PTR[64+r12]
+	lea	r12,[64+r12]
 	pxor	xmm2,xmm10
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm5,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	pxor	xmm3,XMMWORD PTR[48+rsp]
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	movdqu	XMMWORD PTR[48+r13],xmm3
-	lea	r13,QWORD PTR[64+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm5,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	pxor	xmm3,XMMWORD[48+rsp]
+	movdqu	XMMWORD[32+r13],xmm5
+	movdqu	XMMWORD[48+r13],xmm3
+	lea	r13,[64+r13]
 
-	movdqa	xmm6,XMMWORD PTR[64+rsp]
-	jmp	$L$xts_dec_done
+	movdqa	xmm6,XMMWORD[64+rsp]
+	jmp	NEAR $L$xts_dec_done
 ALIGN	16
-$L$xts_dec_3::
+$L$xts_dec_3:
 	pxor	xmm0,xmm8
-	lea	r12,QWORD PTR[48+r12]
+	lea	r12,[48+r12]
 	pxor	xmm1,xmm9
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	pxor	xmm5,XMMWORD PTR[32+rsp]
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	movdqu	XMMWORD PTR[32+r13],xmm5
-	lea	r13,QWORD PTR[48+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	pxor	xmm5,XMMWORD[32+rsp]
+	movdqu	XMMWORD[16+r13],xmm0
+	movdqu	XMMWORD[32+r13],xmm5
+	lea	r13,[48+r13]
 
-	movdqa	xmm6,XMMWORD PTR[48+rsp]
-	jmp	$L$xts_dec_done
+	movdqa	xmm6,XMMWORD[48+rsp]
+	jmp	NEAR $L$xts_dec_done
 ALIGN	16
-$L$xts_dec_2::
+$L$xts_dec_2:
 	pxor	xmm15,xmm7
-	lea	r12,QWORD PTR[32+r12]
+	lea	r12,[32+r12]
 	pxor	xmm0,xmm8
-	lea	rax,QWORD PTR[128+rsp]
+	lea	rax,[128+rsp]
 	mov	r10d,edx
 
 	call	_bsaes_decrypt8
 
-	pxor	xmm15,XMMWORD PTR[rsp]
-	pxor	xmm0,XMMWORD PTR[16+rsp]
-	movdqu	XMMWORD PTR[r13],xmm15
-	movdqu	XMMWORD PTR[16+r13],xmm0
-	lea	r13,QWORD PTR[32+r13]
+	pxor	xmm15,XMMWORD[rsp]
+	pxor	xmm0,XMMWORD[16+rsp]
+	movdqu	XMMWORD[r13],xmm15
+	movdqu	XMMWORD[16+r13],xmm0
+	lea	r13,[32+r13]
 
-	movdqa	xmm6,XMMWORD PTR[32+rsp]
-	jmp	$L$xts_dec_done
+	movdqa	xmm6,XMMWORD[32+rsp]
+	jmp	NEAR $L$xts_dec_done
 ALIGN	16
-$L$xts_dec_1::
+$L$xts_dec_1:
 	pxor	xmm7,xmm15
-	lea	r12,QWORD PTR[16+r12]
-	movdqa	XMMWORD PTR[32+rbp],xmm7
-	lea	rcx,QWORD PTR[32+rbp]
-	lea	rdx,QWORD PTR[32+rbp]
-	lea	r8,QWORD PTR[r15]
+	lea	r12,[16+r12]
+	movdqa	XMMWORD[32+rbp],xmm7
+	lea	rcx,[32+rbp]
+	lea	rdx,[32+rbp]
+	lea	r8,[r15]
 	call	asm_AES_decrypt
-	pxor	xmm15,XMMWORD PTR[32+rbp]
+	pxor	xmm15,XMMWORD[32+rbp]
 
 
 
 
 
-	movdqu	XMMWORD PTR[r13],xmm15
-	lea	r13,QWORD PTR[16+r13]
+	movdqu	XMMWORD[r13],xmm15
+	lea	r13,[16+r13]
 
-	movdqa	xmm6,XMMWORD PTR[16+rsp]
+	movdqa	xmm6,XMMWORD[16+rsp]
 
-$L$xts_dec_done::
+$L$xts_dec_done:
 	and	ebx,15
-	jz	$L$xts_dec_ret
+	jz	NEAR $L$xts_dec_ret
 
 	pxor	xmm14,xmm14
-	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
+	movdqa	xmm12,XMMWORD[$L$xts_magic]
 	pcmpgtd	xmm14,xmm6
-	pshufd	xmm13,xmm14,013h
+	pshufd	xmm13,xmm14,0x13
 	movdqa	xmm5,xmm6
 	paddq	xmm6,xmm6
 	pand	xmm13,xmm12
-	movdqu	xmm15,XMMWORD PTR[r12]
+	movdqu	xmm15,XMMWORD[r12]
 	pxor	xmm6,xmm13
 
-	lea	rcx,QWORD PTR[32+rbp]
+	lea	rcx,[32+rbp]
 	pxor	xmm15,xmm6
-	lea	rdx,QWORD PTR[32+rbp]
-	movdqa	XMMWORD PTR[32+rbp],xmm15
-	lea	r8,QWORD PTR[r15]
+	lea	rdx,[32+rbp]
+	movdqa	XMMWORD[32+rbp],xmm15
+	lea	r8,[r15]
 	call	asm_AES_decrypt
-	pxor	xmm6,XMMWORD PTR[32+rbp]
+	pxor	xmm6,XMMWORD[32+rbp]
 	mov	rdx,r13
-	movdqu	XMMWORD PTR[r13],xmm6
+	movdqu	XMMWORD[r13],xmm6
 
-$L$xts_dec_steal::
-	movzx	eax,BYTE PTR[16+r12]
-	movzx	ecx,BYTE PTR[rdx]
-	lea	r12,QWORD PTR[1+r12]
-	mov	BYTE PTR[rdx],al
-	mov	BYTE PTR[16+rdx],cl
-	lea	rdx,QWORD PTR[1+rdx]
+$L$xts_dec_steal:
+	movzx	eax,BYTE[16+r12]
+	movzx	ecx,BYTE[rdx]
+	lea	r12,[1+r12]
+	mov	BYTE[rdx],al
+	mov	BYTE[16+rdx],cl
+	lea	rdx,[1+rdx]
 	sub	ebx,1
-	jnz	$L$xts_dec_steal
+	jnz	NEAR $L$xts_dec_steal
 
-	movdqu	xmm15,XMMWORD PTR[r13]
-	lea	rcx,QWORD PTR[32+rbp]
+	movdqu	xmm15,XMMWORD[r13]
+	lea	rcx,[32+rbp]
 	pxor	xmm15,xmm5
-	lea	rdx,QWORD PTR[32+rbp]
-	movdqa	XMMWORD PTR[32+rbp],xmm15
-	lea	r8,QWORD PTR[r15]
+	lea	rdx,[32+rbp]
+	movdqa	XMMWORD[32+rbp],xmm15
+	lea	r8,[r15]
 	call	asm_AES_decrypt
-	pxor	xmm5,XMMWORD PTR[32+rbp]
-	movdqu	XMMWORD PTR[r13],xmm5
+	pxor	xmm5,XMMWORD[32+rbp]
+	movdqu	XMMWORD[r13],xmm5
 
-$L$xts_dec_ret::
-	lea	rax,QWORD PTR[rsp]
+$L$xts_dec_ret:
+	lea	rax,[rsp]
 	pxor	xmm0,xmm0
-$L$xts_dec_bzero::
-	movdqa	XMMWORD PTR[rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm0
-	lea	rax,QWORD PTR[32+rax]
+$L$xts_dec_bzero:
+	movdqa	XMMWORD[rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm0
+	lea	rax,[32+rax]
 	cmp	rbp,rax
-	ja	$L$xts_dec_bzero
+	ja	NEAR $L$xts_dec_bzero
 
-	lea	rsp,QWORD PTR[rbp]
-	movaps	xmm6,XMMWORD PTR[64+rbp]
-	movaps	xmm7,XMMWORD PTR[80+rbp]
-	movaps	xmm8,XMMWORD PTR[96+rbp]
-	movaps	xmm9,XMMWORD PTR[112+rbp]
-	movaps	xmm10,XMMWORD PTR[128+rbp]
-	movaps	xmm11,XMMWORD PTR[144+rbp]
-	movaps	xmm12,XMMWORD PTR[160+rbp]
-	movaps	xmm13,XMMWORD PTR[176+rbp]
-	movaps	xmm14,XMMWORD PTR[192+rbp]
-	movaps	xmm15,XMMWORD PTR[208+rbp]
-	lea	rsp,QWORD PTR[160+rbp]
-	mov	r15,QWORD PTR[72+rsp]
-	mov	r14,QWORD PTR[80+rsp]
-	mov	r13,QWORD PTR[88+rsp]
-	mov	r12,QWORD PTR[96+rsp]
-	mov	rbx,QWORD PTR[104+rsp]
-	mov	rax,QWORD PTR[112+rsp]
-	lea	rsp,QWORD PTR[120+rsp]
+	lea	rsp,[rbp]
+	movaps	xmm6,XMMWORD[64+rbp]
+	movaps	xmm7,XMMWORD[80+rbp]
+	movaps	xmm8,XMMWORD[96+rbp]
+	movaps	xmm9,XMMWORD[112+rbp]
+	movaps	xmm10,XMMWORD[128+rbp]
+	movaps	xmm11,XMMWORD[144+rbp]
+	movaps	xmm12,XMMWORD[160+rbp]
+	movaps	xmm13,XMMWORD[176+rbp]
+	movaps	xmm14,XMMWORD[192+rbp]
+	movaps	xmm15,XMMWORD[208+rbp]
+	lea	rsp,[160+rbp]
+	mov	r15,QWORD[72+rsp]
+	mov	r14,QWORD[80+rsp]
+	mov	r13,QWORD[88+rsp]
+	mov	r12,QWORD[96+rsp]
+	mov	rbx,QWORD[104+rsp]
+	mov	rax,QWORD[112+rsp]
+	lea	rsp,[120+rsp]
 	mov	rbp,rax
-$L$xts_dec_epilogue::
+$L$xts_dec_epilogue:
 	DB	0F3h,0C3h		;repret
-bsaes_xts_decrypt	ENDP
+
 
 ALIGN	64
-_bsaes_const::
-$L$M0ISR::
-	DQ	00a0e0206070b0f03h,00004080c0d010509h
-$L$ISRM0::
-	DQ	001040b0e0205080fh,00306090c00070a0dh
-$L$ISR::
-	DQ	00504070602010003h,00f0e0d0c080b0a09h
-$L$BS0::
-	DQ	05555555555555555h,05555555555555555h
-$L$BS1::
-	DQ	03333333333333333h,03333333333333333h
-$L$BS2::
-	DQ	00f0f0f0f0f0f0f0fh,00f0f0f0f0f0f0f0fh
-$L$SR::
-	DQ	00504070600030201h,00f0e0d0c0a09080bh
-$L$SRM0::
-	DQ	00304090e00050a0fh,001060b0c0207080dh
-$L$M0SR::
-	DQ	00a0e02060f03070bh,00004080c05090d01h
-$L$SWPUP::
-	DQ	00706050403020100h,00c0d0e0f0b0a0908h
-$L$SWPUPM0SR::
-	DQ	00a0d02060c03070bh,00004080f05090e01h
-$L$ADD1::
-	DQ	00000000000000000h,00000000100000000h
-$L$ADD2::
-	DQ	00000000000000000h,00000000200000000h
-$L$ADD3::
-	DQ	00000000000000000h,00000000300000000h
-$L$ADD4::
-	DQ	00000000000000000h,00000000400000000h
-$L$ADD5::
-	DQ	00000000000000000h,00000000500000000h
-$L$ADD6::
-	DQ	00000000000000000h,00000000600000000h
-$L$ADD7::
-	DQ	00000000000000000h,00000000700000000h
-$L$ADD8::
-	DQ	00000000000000000h,00000000800000000h
-$L$xts_magic::
-	DD	087h,0,1,0
-$L$masks::
-	DQ	00101010101010101h,00101010101010101h
-	DQ	00202020202020202h,00202020202020202h
-	DQ	00404040404040404h,00404040404040404h
-	DQ	00808080808080808h,00808080808080808h
-$L$M0::
-	DQ	002060a0e03070b0fh,00004080c0105090dh
-$L$63::
-	DQ	06363636363636363h,06363636363636363h
+_bsaes_const:
+$L$M0ISR:
+	DQ	0x0a0e0206070b0f03,0x0004080c0d010509
+$L$ISRM0:
+	DQ	0x01040b0e0205080f,0x0306090c00070a0d
+$L$ISR:
+	DQ	0x0504070602010003,0x0f0e0d0c080b0a09
+$L$BS0:
+	DQ	0x5555555555555555,0x5555555555555555
+$L$BS1:
+	DQ	0x3333333333333333,0x3333333333333333
+$L$BS2:
+	DQ	0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f
+$L$SR:
+	DQ	0x0504070600030201,0x0f0e0d0c0a09080b
+$L$SRM0:
+	DQ	0x0304090e00050a0f,0x01060b0c0207080d
+$L$M0SR:
+	DQ	0x0a0e02060f03070b,0x0004080c05090d01
+$L$SWPUP:
+	DQ	0x0706050403020100,0x0c0d0e0f0b0a0908
+$L$SWPUPM0SR:
+	DQ	0x0a0d02060c03070b,0x0004080f05090e01
+$L$ADD1:
+	DQ	0x0000000000000000,0x0000000100000000
+$L$ADD2:
+	DQ	0x0000000000000000,0x0000000200000000
+$L$ADD3:
+	DQ	0x0000000000000000,0x0000000300000000
+$L$ADD4:
+	DQ	0x0000000000000000,0x0000000400000000
+$L$ADD5:
+	DQ	0x0000000000000000,0x0000000500000000
+$L$ADD6:
+	DQ	0x0000000000000000,0x0000000600000000
+$L$ADD7:
+	DQ	0x0000000000000000,0x0000000700000000
+$L$ADD8:
+	DQ	0x0000000000000000,0x0000000800000000
+$L$xts_magic:
+	DD	0x87,0,1,0
+$L$masks:
+	DQ	0x0101010101010101,0x0101010101010101
+	DQ	0x0202020202020202,0x0202020202020202
+	DQ	0x0404040404040404,0x0404040404040404
+	DQ	0x0808080808080808,0x0808080808080808
+$L$M0:
+	DQ	0x02060a0e03070b0f,0x0004080c0105090d
+$L$63:
+	DQ	0x6363636363636363,0x6363636363636363
 DB	66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102
 DB	111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44
 DB	32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44
@@ -2600,10 +2604,10 @@
 DB	65,110,100,121,32,80,111,108,121,97,107,111,118,0
 ALIGN	64
 
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2615,67 +2619,67 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[160+r8]
+	mov	rax,QWORD[160+r8]
 
-	lea	rsi,QWORD PTR[64+rax]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[64+rax]
+	lea	rdi,[512+r8]
 	mov	ecx,20
-	DD	0a548f3fch
-	lea	rax,QWORD PTR[160+rax]
+	DD	0xa548f3fc
+	lea	rax,[160+rax]
 
-	mov	rbp,QWORD PTR[112+rax]
-	mov	rbx,QWORD PTR[104+rax]
-	mov	r12,QWORD PTR[96+rax]
-	mov	r13,QWORD PTR[88+rax]
-	mov	r14,QWORD PTR[80+rax]
-	mov	r15,QWORD PTR[72+rax]
-	lea	rax,QWORD PTR[120+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbp,QWORD[112+rax]
+	mov	rbx,QWORD[104+rax]
+	mov	r12,QWORD[96+rax]
+	mov	r13,QWORD[88+rax]
+	mov	r14,QWORD[80+rax]
+	mov	r15,QWORD[72+rax]
+	lea	rax,[120+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_prologue::
-	mov	QWORD PTR[152+r8],rax
+$L$in_prologue:
+	mov	QWORD[152+r8],rax
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -2689,46 +2693,41 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$cbc_dec_prologue
-	DD	imagerel $L$cbc_dec_epilogue
-	DD	imagerel $L$cbc_dec_info
+	DD	$L$cbc_dec_prologue wrt ..imagebase
+	DD	$L$cbc_dec_epilogue wrt ..imagebase
+	DD	$L$cbc_dec_info wrt ..imagebase
 
-	DD	imagerel $L$ctr_enc_prologue
-	DD	imagerel $L$ctr_enc_epilogue
-	DD	imagerel $L$ctr_enc_info
+	DD	$L$ctr_enc_prologue wrt ..imagebase
+	DD	$L$ctr_enc_epilogue wrt ..imagebase
+	DD	$L$ctr_enc_info wrt ..imagebase
 
-	DD	imagerel $L$xts_enc_prologue
-	DD	imagerel $L$xts_enc_epilogue
-	DD	imagerel $L$xts_enc_info
+	DD	$L$xts_enc_prologue wrt ..imagebase
+	DD	$L$xts_enc_epilogue wrt ..imagebase
+	DD	$L$xts_enc_info wrt ..imagebase
 
-	DD	imagerel $L$xts_dec_prologue
-	DD	imagerel $L$xts_dec_epilogue
-	DD	imagerel $L$xts_dec_info
+	DD	$L$xts_dec_prologue wrt ..imagebase
+	DD	$L$xts_dec_epilogue wrt ..imagebase
+	DD	$L$xts_dec_info wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$cbc_dec_info::
+$L$cbc_dec_info:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$cbc_dec_body,imagerel $L$cbc_dec_epilogue
-$L$ctr_enc_info::
+	DD	se_handler wrt ..imagebase
+	DD	$L$cbc_dec_body wrt ..imagebase,$L$cbc_dec_epilogue wrt ..imagebase
+$L$ctr_enc_info:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$ctr_enc_body,imagerel $L$ctr_enc_epilogue
-$L$xts_enc_info::
+	DD	se_handler wrt ..imagebase
+	DD	$L$ctr_enc_body wrt ..imagebase,$L$ctr_enc_epilogue wrt ..imagebase
+$L$xts_enc_info:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue
-$L$xts_dec_info::
+	DD	se_handler wrt ..imagebase
+	DD	$L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase
+$L$xts_dec_info:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue
-
-.xdata	ENDS
-END
+	DD	se_handler wrt ..imagebase
+	DD	$L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/aes/vpaes-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/aes/vpaes-x86_64.asm
index 292f64d..3edde9f 100644
--- a/third_party/boringssl/win-x86_64/crypto/aes/vpaes-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/aes/vpaes-x86_64.asm
@@ -1,5 +1,9 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
+
 
 
 
@@ -18,27 +22,27 @@
 
 
 ALIGN	16
-_vpaes_encrypt_core	PROC PRIVATE
+_vpaes_encrypt_core:
 	mov	r9,rdx
 	mov	r11,16
-	mov	eax,DWORD PTR[240+rdx]
+	mov	eax,DWORD[240+rdx]
 	movdqa	xmm1,xmm9
-	movdqa	xmm2,XMMWORD PTR[$L$k_ipt]
+	movdqa	xmm2,XMMWORD[$L$k_ipt]
 	pandn	xmm1,xmm0
-	movdqu	xmm5,XMMWORD PTR[r9]
+	movdqu	xmm5,XMMWORD[r9]
 	psrld	xmm1,4
 	pand	xmm0,xmm9
 DB	102,15,56,0,208
-	movdqa	xmm0,XMMWORD PTR[(($L$k_ipt+16))]
+	movdqa	xmm0,XMMWORD[(($L$k_ipt+16))]
 DB	102,15,56,0,193
 	pxor	xmm2,xmm5
 	add	r9,16
 	pxor	xmm0,xmm2
-	lea	r10,QWORD PTR[$L$k_mc_backward]
-	jmp	$L$enc_entry
+	lea	r10,[$L$k_mc_backward]
+	jmp	NEAR $L$enc_entry
 
 ALIGN	16
-$L$enc_loop::
+$L$enc_loop:
 
 	movdqa	xmm4,xmm13
 	movdqa	xmm0,xmm12
@@ -47,9 +51,9 @@
 	pxor	xmm4,xmm5
 	movdqa	xmm5,xmm15
 	pxor	xmm0,xmm4
-	movdqa	xmm1,XMMWORD PTR[((-64))+r10*1+r11]
+	movdqa	xmm1,XMMWORD[((-64))+r10*1+r11]
 DB	102,15,56,0,234
-	movdqa	xmm4,XMMWORD PTR[r10*1+r11]
+	movdqa	xmm4,XMMWORD[r10*1+r11]
 	movdqa	xmm2,xmm14
 DB	102,15,56,0,211
 	movdqa	xmm3,xmm0
@@ -61,11 +65,11 @@
 	add	r11,16
 	pxor	xmm3,xmm0
 DB	102,15,56,0,193
-	and	r11,030h
+	and	r11,0x30
 	sub	rax,1
 	pxor	xmm0,xmm3
 
-$L$enc_entry::
+$L$enc_entry:
 
 	movdqa	xmm1,xmm9
 	movdqa	xmm5,xmm11
@@ -85,21 +89,21 @@
 	movdqa	xmm3,xmm10
 	pxor	xmm2,xmm0
 DB	102,15,56,0,220
-	movdqu	xmm5,XMMWORD PTR[r9]
+	movdqu	xmm5,XMMWORD[r9]
 	pxor	xmm3,xmm1
-	jnz	$L$enc_loop
+	jnz	NEAR $L$enc_loop
 
 
-	movdqa	xmm4,XMMWORD PTR[((-96))+r10]
-	movdqa	xmm0,XMMWORD PTR[((-80))+r10]
+	movdqa	xmm4,XMMWORD[((-96))+r10]
+	movdqa	xmm0,XMMWORD[((-80))+r10]
 DB	102,15,56,0,226
 	pxor	xmm4,xmm5
 DB	102,15,56,0,195
-	movdqa	xmm1,XMMWORD PTR[64+r10*1+r11]
+	movdqa	xmm1,XMMWORD[64+r10*1+r11]
 	pxor	xmm0,xmm4
 DB	102,15,56,0,193
 	DB	0F3h,0C3h		;repret
-_vpaes_encrypt_core	ENDP
+
 
 
 
@@ -108,59 +112,59 @@
 
 
 ALIGN	16
-_vpaes_decrypt_core	PROC PRIVATE
+_vpaes_decrypt_core:
 	mov	r9,rdx
-	mov	eax,DWORD PTR[240+rdx]
+	mov	eax,DWORD[240+rdx]
 	movdqa	xmm1,xmm9
-	movdqa	xmm2,XMMWORD PTR[$L$k_dipt]
+	movdqa	xmm2,XMMWORD[$L$k_dipt]
 	pandn	xmm1,xmm0
 	mov	r11,rax
 	psrld	xmm1,4
-	movdqu	xmm5,XMMWORD PTR[r9]
+	movdqu	xmm5,XMMWORD[r9]
 	shl	r11,4
 	pand	xmm0,xmm9
 DB	102,15,56,0,208
-	movdqa	xmm0,XMMWORD PTR[(($L$k_dipt+16))]
-	xor	r11,030h
-	lea	r10,QWORD PTR[$L$k_dsbd]
+	movdqa	xmm0,XMMWORD[(($L$k_dipt+16))]
+	xor	r11,0x30
+	lea	r10,[$L$k_dsbd]
 DB	102,15,56,0,193
-	and	r11,030h
+	and	r11,0x30
 	pxor	xmm2,xmm5
-	movdqa	xmm5,XMMWORD PTR[(($L$k_mc_forward+48))]
+	movdqa	xmm5,XMMWORD[(($L$k_mc_forward+48))]
 	pxor	xmm0,xmm2
 	add	r9,16
 	add	r11,r10
-	jmp	$L$dec_entry
+	jmp	NEAR $L$dec_entry
 
 ALIGN	16
-$L$dec_loop::
+$L$dec_loop:
 
 
 
-	movdqa	xmm4,XMMWORD PTR[((-32))+r10]
-	movdqa	xmm1,XMMWORD PTR[((-16))+r10]
+	movdqa	xmm4,XMMWORD[((-32))+r10]
+	movdqa	xmm1,XMMWORD[((-16))+r10]
 DB	102,15,56,0,226
 DB	102,15,56,0,203
 	pxor	xmm0,xmm4
-	movdqa	xmm4,XMMWORD PTR[r10]
+	movdqa	xmm4,XMMWORD[r10]
 	pxor	xmm0,xmm1
-	movdqa	xmm1,XMMWORD PTR[16+r10]
+	movdqa	xmm1,XMMWORD[16+r10]
 
 DB	102,15,56,0,226
 DB	102,15,56,0,197
 DB	102,15,56,0,203
 	pxor	xmm0,xmm4
-	movdqa	xmm4,XMMWORD PTR[32+r10]
+	movdqa	xmm4,XMMWORD[32+r10]
 	pxor	xmm0,xmm1
-	movdqa	xmm1,XMMWORD PTR[48+r10]
+	movdqa	xmm1,XMMWORD[48+r10]
 
 DB	102,15,56,0,226
 DB	102,15,56,0,197
 DB	102,15,56,0,203
 	pxor	xmm0,xmm4
-	movdqa	xmm4,XMMWORD PTR[64+r10]
+	movdqa	xmm4,XMMWORD[64+r10]
 	pxor	xmm0,xmm1
-	movdqa	xmm1,XMMWORD PTR[80+r10]
+	movdqa	xmm1,XMMWORD[80+r10]
 
 DB	102,15,56,0,226
 DB	102,15,56,0,197
@@ -171,7 +175,7 @@
 	pxor	xmm0,xmm1
 	sub	rax,1
 
-$L$dec_entry::
+$L$dec_entry:
 
 	movdqa	xmm1,xmm9
 	pandn	xmm1,xmm0
@@ -191,21 +195,21 @@
 	movdqa	xmm3,xmm10
 	pxor	xmm2,xmm0
 DB	102,15,56,0,220
-	movdqu	xmm0,XMMWORD PTR[r9]
+	movdqu	xmm0,XMMWORD[r9]
 	pxor	xmm3,xmm1
-	jnz	$L$dec_loop
+	jnz	NEAR $L$dec_loop
 
 
-	movdqa	xmm4,XMMWORD PTR[96+r10]
+	movdqa	xmm4,XMMWORD[96+r10]
 DB	102,15,56,0,226
 	pxor	xmm4,xmm0
-	movdqa	xmm0,XMMWORD PTR[112+r10]
-	movdqa	xmm2,XMMWORD PTR[((-352))+r11]
+	movdqa	xmm0,XMMWORD[112+r10]
+	movdqa	xmm2,XMMWORD[((-352))+r11]
 DB	102,15,56,0,195
 	pxor	xmm0,xmm4
 DB	102,15,56,0,194
 	DB	0F3h,0C3h		;repret
-_vpaes_decrypt_core	ENDP
+
 
 
 
@@ -214,41 +218,41 @@
 
 
 ALIGN	16
-_vpaes_schedule_core	PROC PRIVATE
+_vpaes_schedule_core:
 
 
 
 
 
 	call	_vpaes_preheat
-	movdqa	xmm8,XMMWORD PTR[$L$k_rcon]
-	movdqu	xmm0,XMMWORD PTR[rdi]
+	movdqa	xmm8,XMMWORD[$L$k_rcon]
+	movdqu	xmm0,XMMWORD[rdi]
 
 
 	movdqa	xmm3,xmm0
-	lea	r11,QWORD PTR[$L$k_ipt]
+	lea	r11,[$L$k_ipt]
 	call	_vpaes_schedule_transform
 	movdqa	xmm7,xmm0
 
-	lea	r10,QWORD PTR[$L$k_sr]
+	lea	r10,[$L$k_sr]
 	test	rcx,rcx
-	jnz	$L$schedule_am_decrypting
+	jnz	NEAR $L$schedule_am_decrypting
 
 
-	movdqu	XMMWORD PTR[rdx],xmm0
-	jmp	$L$schedule_go
+	movdqu	XMMWORD[rdx],xmm0
+	jmp	NEAR $L$schedule_go
 
-$L$schedule_am_decrypting::
+$L$schedule_am_decrypting:
 
-	movdqa	xmm1,XMMWORD PTR[r10*1+r8]
+	movdqa	xmm1,XMMWORD[r10*1+r8]
 DB	102,15,56,0,217
-	movdqu	XMMWORD PTR[rdx],xmm3
-	xor	r8,030h
+	movdqu	XMMWORD[rdx],xmm3
+	xor	r8,0x30
 
-$L$schedule_go::
+$L$schedule_go:
 	cmp	esi,192
-	ja	$L$schedule_256
-	je	$L$schedule_192
+	ja	NEAR $L$schedule_256
+	je	NEAR $L$schedule_192
 
 
 
@@ -259,15 +263,15 @@
 
 
 
-$L$schedule_128::
+$L$schedule_128:
 	mov	esi,10
 
-$L$oop_schedule_128::
+$L$oop_schedule_128:
 	call	_vpaes_schedule_round
 	dec	rsi
-	jz	$L$schedule_mangle_last
+	jz	NEAR $L$schedule_mangle_last
 	call	_vpaes_schedule_mangle
-	jmp	$L$oop_schedule_128
+	jmp	NEAR $L$oop_schedule_128
 
 
 
@@ -285,15 +289,15 @@
 
 
 ALIGN	16
-$L$schedule_192::
-	movdqu	xmm0,XMMWORD PTR[8+rdi]
+$L$schedule_192:
+	movdqu	xmm0,XMMWORD[8+rdi]
 	call	_vpaes_schedule_transform
 	movdqa	xmm6,xmm0
 	pxor	xmm4,xmm4
 	movhlps	xmm6,xmm4
 	mov	esi,4
 
-$L$oop_schedule_192::
+$L$oop_schedule_192:
 	call	_vpaes_schedule_round
 DB	102,15,58,15,198,8
 	call	_vpaes_schedule_mangle
@@ -301,10 +305,10 @@
 	call	_vpaes_schedule_mangle
 	call	_vpaes_schedule_round
 	dec	rsi
-	jz	$L$schedule_mangle_last
+	jz	NEAR $L$schedule_mangle_last
 	call	_vpaes_schedule_mangle
 	call	_vpaes_schedule_192_smear
-	jmp	$L$oop_schedule_192
+	jmp	NEAR $L$oop_schedule_192
 
 
 
@@ -317,29 +321,29 @@
 
 
 ALIGN	16
-$L$schedule_256::
-	movdqu	xmm0,XMMWORD PTR[16+rdi]
+$L$schedule_256:
+	movdqu	xmm0,XMMWORD[16+rdi]
 	call	_vpaes_schedule_transform
 	mov	esi,7
 
-$L$oop_schedule_256::
+$L$oop_schedule_256:
 	call	_vpaes_schedule_mangle
 	movdqa	xmm6,xmm0
 
 
 	call	_vpaes_schedule_round
 	dec	rsi
-	jz	$L$schedule_mangle_last
+	jz	NEAR $L$schedule_mangle_last
 	call	_vpaes_schedule_mangle
 
 
-	pshufd	xmm0,xmm0,0FFh
+	pshufd	xmm0,xmm0,0xFF
 	movdqa	xmm5,xmm7
 	movdqa	xmm7,xmm6
 	call	_vpaes_schedule_low_round
 	movdqa	xmm7,xmm5
 
-	jmp	$L$oop_schedule_256
+	jmp	NEAR $L$oop_schedule_256
 
 
 
@@ -353,23 +357,23 @@
 
 
 ALIGN	16
-$L$schedule_mangle_last::
+$L$schedule_mangle_last:
 
-	lea	r11,QWORD PTR[$L$k_deskew]
+	lea	r11,[$L$k_deskew]
 	test	rcx,rcx
-	jnz	$L$schedule_mangle_last_dec
+	jnz	NEAR $L$schedule_mangle_last_dec
 
 
-	movdqa	xmm1,XMMWORD PTR[r10*1+r8]
+	movdqa	xmm1,XMMWORD[r10*1+r8]
 DB	102,15,56,0,193
-	lea	r11,QWORD PTR[$L$k_opt]
+	lea	r11,[$L$k_opt]
 	add	rdx,32
 
-$L$schedule_mangle_last_dec::
+$L$schedule_mangle_last_dec:
 	add	rdx,-16
-	pxor	xmm0,XMMWORD PTR[$L$k_s63]
+	pxor	xmm0,XMMWORD[$L$k_s63]
 	call	_vpaes_schedule_transform
-	movdqu	XMMWORD PTR[rdx],xmm0
+	movdqu	XMMWORD[rdx],xmm0
 
 
 	pxor	xmm0,xmm0
@@ -381,7 +385,7 @@
 	pxor	xmm6,xmm6
 	pxor	xmm7,xmm7
 	DB	0F3h,0C3h		;repret
-_vpaes_schedule_core	ENDP
+
 
 
 
@@ -399,16 +403,16 @@
 
 
 ALIGN	16
-_vpaes_schedule_192_smear	PROC PRIVATE
-	pshufd	xmm1,xmm6,080h
-	pshufd	xmm0,xmm7,0FEh
+_vpaes_schedule_192_smear:
+	pshufd	xmm1,xmm6,0x80
+	pshufd	xmm0,xmm7,0xFE
 	pxor	xmm6,xmm1
 	pxor	xmm1,xmm1
 	pxor	xmm6,xmm0
 	movdqa	xmm0,xmm6
 	movhlps	xmm6,xmm1
 	DB	0F3h,0C3h		;repret
-_vpaes_schedule_192_smear	ENDP
+
 
 
 
@@ -430,7 +434,7 @@
 
 
 ALIGN	16
-_vpaes_schedule_round	PROC PRIVATE
+_vpaes_schedule_round:
 
 	pxor	xmm1,xmm1
 DB	102,65,15,58,15,200,15
@@ -438,13 +442,13 @@
 	pxor	xmm7,xmm1
 
 
-	pshufd	xmm0,xmm0,0FFh
+	pshufd	xmm0,xmm0,0xFF
 DB	102,15,58,15,192,1
 
 
 
 
-_vpaes_schedule_low_round::
+_vpaes_schedule_low_round:
 
 	movdqa	xmm1,xmm7
 	pslldq	xmm7,4
@@ -452,7 +456,7 @@
 	movdqa	xmm1,xmm7
 	pslldq	xmm7,8
 	pxor	xmm7,xmm1
-	pxor	xmm7,XMMWORD PTR[$L$k_s63]
+	pxor	xmm7,XMMWORD[$L$k_s63]
 
 
 	movdqa	xmm1,xmm9
@@ -484,7 +488,7 @@
 	pxor	xmm0,xmm7
 	movdqa	xmm7,xmm0
 	DB	0F3h,0C3h		;repret
-_vpaes_schedule_round	ENDP
+
 
 
 
@@ -497,18 +501,18 @@
 
 
 ALIGN	16
-_vpaes_schedule_transform	PROC PRIVATE
+_vpaes_schedule_transform:
 	movdqa	xmm1,xmm9
 	pandn	xmm1,xmm0
 	psrld	xmm1,4
 	pand	xmm0,xmm9
-	movdqa	xmm2,XMMWORD PTR[r11]
+	movdqa	xmm2,XMMWORD[r11]
 DB	102,15,56,0,208
-	movdqa	xmm0,XMMWORD PTR[16+r11]
+	movdqa	xmm0,XMMWORD[16+r11]
 DB	102,15,56,0,193
 	pxor	xmm0,xmm2
 	DB	0F3h,0C3h		;repret
-_vpaes_schedule_transform	ENDP
+
 
 
 
@@ -535,15 +539,15 @@
 
 
 ALIGN	16
-_vpaes_schedule_mangle	PROC PRIVATE
+_vpaes_schedule_mangle:
 	movdqa	xmm4,xmm0
-	movdqa	xmm5,XMMWORD PTR[$L$k_mc_forward]
+	movdqa	xmm5,XMMWORD[$L$k_mc_forward]
 	test	rcx,rcx
-	jnz	$L$schedule_mangle_dec
+	jnz	NEAR $L$schedule_mangle_dec
 
 
 	add	rdx,16
-	pxor	xmm4,XMMWORD PTR[$L$k_s63]
+	pxor	xmm4,XMMWORD[$L$k_s63]
 DB	102,15,56,0,229
 	movdqa	xmm3,xmm4
 DB	102,15,56,0,229
@@ -551,143 +555,142 @@
 DB	102,15,56,0,229
 	pxor	xmm3,xmm4
 
-	jmp	$L$schedule_mangle_both
+	jmp	NEAR $L$schedule_mangle_both
 ALIGN	16
-$L$schedule_mangle_dec::
+$L$schedule_mangle_dec:
 
-	lea	r11,QWORD PTR[$L$k_dksd]
+	lea	r11,[$L$k_dksd]
 	movdqa	xmm1,xmm9
 	pandn	xmm1,xmm4
 	psrld	xmm1,4
 	pand	xmm4,xmm9
 
-	movdqa	xmm2,XMMWORD PTR[r11]
+	movdqa	xmm2,XMMWORD[r11]
 DB	102,15,56,0,212
-	movdqa	xmm3,XMMWORD PTR[16+r11]
+	movdqa	xmm3,XMMWORD[16+r11]
 DB	102,15,56,0,217
 	pxor	xmm3,xmm2
 DB	102,15,56,0,221
 
-	movdqa	xmm2,XMMWORD PTR[32+r11]
+	movdqa	xmm2,XMMWORD[32+r11]
 DB	102,15,56,0,212
 	pxor	xmm2,xmm3
-	movdqa	xmm3,XMMWORD PTR[48+r11]
+	movdqa	xmm3,XMMWORD[48+r11]
 DB	102,15,56,0,217
 	pxor	xmm3,xmm2
 DB	102,15,56,0,221
 
-	movdqa	xmm2,XMMWORD PTR[64+r11]
+	movdqa	xmm2,XMMWORD[64+r11]
 DB	102,15,56,0,212
 	pxor	xmm2,xmm3
-	movdqa	xmm3,XMMWORD PTR[80+r11]
+	movdqa	xmm3,XMMWORD[80+r11]
 DB	102,15,56,0,217
 	pxor	xmm3,xmm2
 DB	102,15,56,0,221
 
-	movdqa	xmm2,XMMWORD PTR[96+r11]
+	movdqa	xmm2,XMMWORD[96+r11]
 DB	102,15,56,0,212
 	pxor	xmm2,xmm3
-	movdqa	xmm3,XMMWORD PTR[112+r11]
+	movdqa	xmm3,XMMWORD[112+r11]
 DB	102,15,56,0,217
 	pxor	xmm3,xmm2
 
 	add	rdx,-16
 
-$L$schedule_mangle_both::
-	movdqa	xmm1,XMMWORD PTR[r10*1+r8]
+$L$schedule_mangle_both:
+	movdqa	xmm1,XMMWORD[r10*1+r8]
 DB	102,15,56,0,217
 	add	r8,-16
-	and	r8,030h
-	movdqu	XMMWORD PTR[rdx],xmm3
+	and	r8,0x30
+	movdqu	XMMWORD[rdx],xmm3
 	DB	0F3h,0C3h		;repret
-_vpaes_schedule_mangle	ENDP
 
 
 
 
-PUBLIC	vpaes_set_encrypt_key
+
+global	vpaes_set_encrypt_key
 
 ALIGN	16
-vpaes_set_encrypt_key	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+vpaes_set_encrypt_key:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_vpaes_set_encrypt_key::
+$L$SEH_begin_vpaes_set_encrypt_key:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	lea	rsp,QWORD PTR[((-184))+rsp]
-	movaps	XMMWORD PTR[16+rsp],xmm6
-	movaps	XMMWORD PTR[32+rsp],xmm7
-	movaps	XMMWORD PTR[48+rsp],xmm8
-	movaps	XMMWORD PTR[64+rsp],xmm9
-	movaps	XMMWORD PTR[80+rsp],xmm10
-	movaps	XMMWORD PTR[96+rsp],xmm11
-	movaps	XMMWORD PTR[112+rsp],xmm12
-	movaps	XMMWORD PTR[128+rsp],xmm13
-	movaps	XMMWORD PTR[144+rsp],xmm14
-	movaps	XMMWORD PTR[160+rsp],xmm15
-$L$enc_key_body::
+	lea	rsp,[((-184))+rsp]
+	movaps	XMMWORD[16+rsp],xmm6
+	movaps	XMMWORD[32+rsp],xmm7
+	movaps	XMMWORD[48+rsp],xmm8
+	movaps	XMMWORD[64+rsp],xmm9
+	movaps	XMMWORD[80+rsp],xmm10
+	movaps	XMMWORD[96+rsp],xmm11
+	movaps	XMMWORD[112+rsp],xmm12
+	movaps	XMMWORD[128+rsp],xmm13
+	movaps	XMMWORD[144+rsp],xmm14
+	movaps	XMMWORD[160+rsp],xmm15
+$L$enc_key_body:
 	mov	eax,esi
 	shr	eax,5
 	add	eax,5
-	mov	DWORD PTR[240+rdx],eax
+	mov	DWORD[240+rdx],eax
 
 	mov	ecx,0
-	mov	r8d,030h
+	mov	r8d,0x30
 	call	_vpaes_schedule_core
-	movaps	xmm6,XMMWORD PTR[16+rsp]
-	movaps	xmm7,XMMWORD PTR[32+rsp]
-	movaps	xmm8,XMMWORD PTR[48+rsp]
-	movaps	xmm9,XMMWORD PTR[64+rsp]
-	movaps	xmm10,XMMWORD PTR[80+rsp]
-	movaps	xmm11,XMMWORD PTR[96+rsp]
-	movaps	xmm12,XMMWORD PTR[112+rsp]
-	movaps	xmm13,XMMWORD PTR[128+rsp]
-	movaps	xmm14,XMMWORD PTR[144+rsp]
-	movaps	xmm15,XMMWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[184+rsp]
-$L$enc_key_epilogue::
+	movaps	xmm6,XMMWORD[16+rsp]
+	movaps	xmm7,XMMWORD[32+rsp]
+	movaps	xmm8,XMMWORD[48+rsp]
+	movaps	xmm9,XMMWORD[64+rsp]
+	movaps	xmm10,XMMWORD[80+rsp]
+	movaps	xmm11,XMMWORD[96+rsp]
+	movaps	xmm12,XMMWORD[112+rsp]
+	movaps	xmm13,XMMWORD[128+rsp]
+	movaps	xmm14,XMMWORD[144+rsp]
+	movaps	xmm15,XMMWORD[160+rsp]
+	lea	rsp,[184+rsp]
+$L$enc_key_epilogue:
 	xor	eax,eax
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_vpaes_set_encrypt_key::
-vpaes_set_encrypt_key	ENDP
+$L$SEH_end_vpaes_set_encrypt_key:
 
-PUBLIC	vpaes_set_decrypt_key
+global	vpaes_set_decrypt_key
 
 ALIGN	16
-vpaes_set_decrypt_key	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+vpaes_set_decrypt_key:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_vpaes_set_decrypt_key::
+$L$SEH_begin_vpaes_set_decrypt_key:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	lea	rsp,QWORD PTR[((-184))+rsp]
-	movaps	XMMWORD PTR[16+rsp],xmm6
-	movaps	XMMWORD PTR[32+rsp],xmm7
-	movaps	XMMWORD PTR[48+rsp],xmm8
-	movaps	XMMWORD PTR[64+rsp],xmm9
-	movaps	XMMWORD PTR[80+rsp],xmm10
-	movaps	XMMWORD PTR[96+rsp],xmm11
-	movaps	XMMWORD PTR[112+rsp],xmm12
-	movaps	XMMWORD PTR[128+rsp],xmm13
-	movaps	XMMWORD PTR[144+rsp],xmm14
-	movaps	XMMWORD PTR[160+rsp],xmm15
-$L$dec_key_body::
+	lea	rsp,[((-184))+rsp]
+	movaps	XMMWORD[16+rsp],xmm6
+	movaps	XMMWORD[32+rsp],xmm7
+	movaps	XMMWORD[48+rsp],xmm8
+	movaps	XMMWORD[64+rsp],xmm9
+	movaps	XMMWORD[80+rsp],xmm10
+	movaps	XMMWORD[96+rsp],xmm11
+	movaps	XMMWORD[112+rsp],xmm12
+	movaps	XMMWORD[128+rsp],xmm13
+	movaps	XMMWORD[144+rsp],xmm14
+	movaps	XMMWORD[160+rsp],xmm15
+$L$dec_key_body:
 	mov	eax,esi
 	shr	eax,5
 	add	eax,5
-	mov	DWORD PTR[240+rdx],eax
+	mov	DWORD[240+rdx],eax
 	shl	eax,4
-	lea	rdx,QWORD PTR[16+rax*1+rdx]
+	lea	rdx,[16+rax*1+rdx]
 
 	mov	ecx,1
 	mov	r8d,esi
@@ -695,197 +698,193 @@
 	and	r8d,32
 	xor	r8d,32
 	call	_vpaes_schedule_core
-	movaps	xmm6,XMMWORD PTR[16+rsp]
-	movaps	xmm7,XMMWORD PTR[32+rsp]
-	movaps	xmm8,XMMWORD PTR[48+rsp]
-	movaps	xmm9,XMMWORD PTR[64+rsp]
-	movaps	xmm10,XMMWORD PTR[80+rsp]
-	movaps	xmm11,XMMWORD PTR[96+rsp]
-	movaps	xmm12,XMMWORD PTR[112+rsp]
-	movaps	xmm13,XMMWORD PTR[128+rsp]
-	movaps	xmm14,XMMWORD PTR[144+rsp]
-	movaps	xmm15,XMMWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[184+rsp]
-$L$dec_key_epilogue::
+	movaps	xmm6,XMMWORD[16+rsp]
+	movaps	xmm7,XMMWORD[32+rsp]
+	movaps	xmm8,XMMWORD[48+rsp]
+	movaps	xmm9,XMMWORD[64+rsp]
+	movaps	xmm10,XMMWORD[80+rsp]
+	movaps	xmm11,XMMWORD[96+rsp]
+	movaps	xmm12,XMMWORD[112+rsp]
+	movaps	xmm13,XMMWORD[128+rsp]
+	movaps	xmm14,XMMWORD[144+rsp]
+	movaps	xmm15,XMMWORD[160+rsp]
+	lea	rsp,[184+rsp]
+$L$dec_key_epilogue:
 	xor	eax,eax
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_vpaes_set_decrypt_key::
-vpaes_set_decrypt_key	ENDP
+$L$SEH_end_vpaes_set_decrypt_key:
 
-PUBLIC	vpaes_encrypt
+global	vpaes_encrypt
 
 ALIGN	16
-vpaes_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+vpaes_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_vpaes_encrypt::
+$L$SEH_begin_vpaes_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	lea	rsp,QWORD PTR[((-184))+rsp]
-	movaps	XMMWORD PTR[16+rsp],xmm6
-	movaps	XMMWORD PTR[32+rsp],xmm7
-	movaps	XMMWORD PTR[48+rsp],xmm8
-	movaps	XMMWORD PTR[64+rsp],xmm9
-	movaps	XMMWORD PTR[80+rsp],xmm10
-	movaps	XMMWORD PTR[96+rsp],xmm11
-	movaps	XMMWORD PTR[112+rsp],xmm12
-	movaps	XMMWORD PTR[128+rsp],xmm13
-	movaps	XMMWORD PTR[144+rsp],xmm14
-	movaps	XMMWORD PTR[160+rsp],xmm15
-$L$enc_body::
-	movdqu	xmm0,XMMWORD PTR[rdi]
+	lea	rsp,[((-184))+rsp]
+	movaps	XMMWORD[16+rsp],xmm6
+	movaps	XMMWORD[32+rsp],xmm7
+	movaps	XMMWORD[48+rsp],xmm8
+	movaps	XMMWORD[64+rsp],xmm9
+	movaps	XMMWORD[80+rsp],xmm10
+	movaps	XMMWORD[96+rsp],xmm11
+	movaps	XMMWORD[112+rsp],xmm12
+	movaps	XMMWORD[128+rsp],xmm13
+	movaps	XMMWORD[144+rsp],xmm14
+	movaps	XMMWORD[160+rsp],xmm15
+$L$enc_body:
+	movdqu	xmm0,XMMWORD[rdi]
 	call	_vpaes_preheat
 	call	_vpaes_encrypt_core
-	movdqu	XMMWORD PTR[rsi],xmm0
-	movaps	xmm6,XMMWORD PTR[16+rsp]
-	movaps	xmm7,XMMWORD PTR[32+rsp]
-	movaps	xmm8,XMMWORD PTR[48+rsp]
-	movaps	xmm9,XMMWORD PTR[64+rsp]
-	movaps	xmm10,XMMWORD PTR[80+rsp]
-	movaps	xmm11,XMMWORD PTR[96+rsp]
-	movaps	xmm12,XMMWORD PTR[112+rsp]
-	movaps	xmm13,XMMWORD PTR[128+rsp]
-	movaps	xmm14,XMMWORD PTR[144+rsp]
-	movaps	xmm15,XMMWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[184+rsp]
-$L$enc_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	movdqu	XMMWORD[rsi],xmm0
+	movaps	xmm6,XMMWORD[16+rsp]
+	movaps	xmm7,XMMWORD[32+rsp]
+	movaps	xmm8,XMMWORD[48+rsp]
+	movaps	xmm9,XMMWORD[64+rsp]
+	movaps	xmm10,XMMWORD[80+rsp]
+	movaps	xmm11,XMMWORD[96+rsp]
+	movaps	xmm12,XMMWORD[112+rsp]
+	movaps	xmm13,XMMWORD[128+rsp]
+	movaps	xmm14,XMMWORD[144+rsp]
+	movaps	xmm15,XMMWORD[160+rsp]
+	lea	rsp,[184+rsp]
+$L$enc_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_vpaes_encrypt::
-vpaes_encrypt	ENDP
+$L$SEH_end_vpaes_encrypt:
 
-PUBLIC	vpaes_decrypt
+global	vpaes_decrypt
 
 ALIGN	16
-vpaes_decrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+vpaes_decrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_vpaes_decrypt::
+$L$SEH_begin_vpaes_decrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	lea	rsp,QWORD PTR[((-184))+rsp]
-	movaps	XMMWORD PTR[16+rsp],xmm6
-	movaps	XMMWORD PTR[32+rsp],xmm7
-	movaps	XMMWORD PTR[48+rsp],xmm8
-	movaps	XMMWORD PTR[64+rsp],xmm9
-	movaps	XMMWORD PTR[80+rsp],xmm10
-	movaps	XMMWORD PTR[96+rsp],xmm11
-	movaps	XMMWORD PTR[112+rsp],xmm12
-	movaps	XMMWORD PTR[128+rsp],xmm13
-	movaps	XMMWORD PTR[144+rsp],xmm14
-	movaps	XMMWORD PTR[160+rsp],xmm15
-$L$dec_body::
-	movdqu	xmm0,XMMWORD PTR[rdi]
+	lea	rsp,[((-184))+rsp]
+	movaps	XMMWORD[16+rsp],xmm6
+	movaps	XMMWORD[32+rsp],xmm7
+	movaps	XMMWORD[48+rsp],xmm8
+	movaps	XMMWORD[64+rsp],xmm9
+	movaps	XMMWORD[80+rsp],xmm10
+	movaps	XMMWORD[96+rsp],xmm11
+	movaps	XMMWORD[112+rsp],xmm12
+	movaps	XMMWORD[128+rsp],xmm13
+	movaps	XMMWORD[144+rsp],xmm14
+	movaps	XMMWORD[160+rsp],xmm15
+$L$dec_body:
+	movdqu	xmm0,XMMWORD[rdi]
 	call	_vpaes_preheat
 	call	_vpaes_decrypt_core
-	movdqu	XMMWORD PTR[rsi],xmm0
-	movaps	xmm6,XMMWORD PTR[16+rsp]
-	movaps	xmm7,XMMWORD PTR[32+rsp]
-	movaps	xmm8,XMMWORD PTR[48+rsp]
-	movaps	xmm9,XMMWORD PTR[64+rsp]
-	movaps	xmm10,XMMWORD PTR[80+rsp]
-	movaps	xmm11,XMMWORD PTR[96+rsp]
-	movaps	xmm12,XMMWORD PTR[112+rsp]
-	movaps	xmm13,XMMWORD PTR[128+rsp]
-	movaps	xmm14,XMMWORD PTR[144+rsp]
-	movaps	xmm15,XMMWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[184+rsp]
-$L$dec_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	movdqu	XMMWORD[rsi],xmm0
+	movaps	xmm6,XMMWORD[16+rsp]
+	movaps	xmm7,XMMWORD[32+rsp]
+	movaps	xmm8,XMMWORD[48+rsp]
+	movaps	xmm9,XMMWORD[64+rsp]
+	movaps	xmm10,XMMWORD[80+rsp]
+	movaps	xmm11,XMMWORD[96+rsp]
+	movaps	xmm12,XMMWORD[112+rsp]
+	movaps	xmm13,XMMWORD[128+rsp]
+	movaps	xmm14,XMMWORD[144+rsp]
+	movaps	xmm15,XMMWORD[160+rsp]
+	lea	rsp,[184+rsp]
+$L$dec_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_vpaes_decrypt::
-vpaes_decrypt	ENDP
-PUBLIC	vpaes_cbc_encrypt
+$L$SEH_end_vpaes_decrypt:
+global	vpaes_cbc_encrypt
 
 ALIGN	16
-vpaes_cbc_encrypt	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+vpaes_cbc_encrypt:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_vpaes_cbc_encrypt::
+$L$SEH_begin_vpaes_cbc_encrypt:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	xchg	rdx,rcx
 	sub	rcx,16
-	jc	$L$cbc_abort
-	lea	rsp,QWORD PTR[((-184))+rsp]
-	movaps	XMMWORD PTR[16+rsp],xmm6
-	movaps	XMMWORD PTR[32+rsp],xmm7
-	movaps	XMMWORD PTR[48+rsp],xmm8
-	movaps	XMMWORD PTR[64+rsp],xmm9
-	movaps	XMMWORD PTR[80+rsp],xmm10
-	movaps	XMMWORD PTR[96+rsp],xmm11
-	movaps	XMMWORD PTR[112+rsp],xmm12
-	movaps	XMMWORD PTR[128+rsp],xmm13
-	movaps	XMMWORD PTR[144+rsp],xmm14
-	movaps	XMMWORD PTR[160+rsp],xmm15
-$L$cbc_body::
-	movdqu	xmm6,XMMWORD PTR[r8]
+	jc	NEAR $L$cbc_abort
+	lea	rsp,[((-184))+rsp]
+	movaps	XMMWORD[16+rsp],xmm6
+	movaps	XMMWORD[32+rsp],xmm7
+	movaps	XMMWORD[48+rsp],xmm8
+	movaps	XMMWORD[64+rsp],xmm9
+	movaps	XMMWORD[80+rsp],xmm10
+	movaps	XMMWORD[96+rsp],xmm11
+	movaps	XMMWORD[112+rsp],xmm12
+	movaps	XMMWORD[128+rsp],xmm13
+	movaps	XMMWORD[144+rsp],xmm14
+	movaps	XMMWORD[160+rsp],xmm15
+$L$cbc_body:
+	movdqu	xmm6,XMMWORD[r8]
 	sub	rsi,rdi
 	call	_vpaes_preheat
 	cmp	r9d,0
-	je	$L$cbc_dec_loop
-	jmp	$L$cbc_enc_loop
+	je	NEAR $L$cbc_dec_loop
+	jmp	NEAR $L$cbc_enc_loop
 ALIGN	16
-$L$cbc_enc_loop::
-	movdqu	xmm0,XMMWORD PTR[rdi]
+$L$cbc_enc_loop:
+	movdqu	xmm0,XMMWORD[rdi]
 	pxor	xmm0,xmm6
 	call	_vpaes_encrypt_core
 	movdqa	xmm6,xmm0
-	movdqu	XMMWORD PTR[rdi*1+rsi],xmm0
-	lea	rdi,QWORD PTR[16+rdi]
+	movdqu	XMMWORD[rdi*1+rsi],xmm0
+	lea	rdi,[16+rdi]
 	sub	rcx,16
-	jnc	$L$cbc_enc_loop
-	jmp	$L$cbc_done
+	jnc	NEAR $L$cbc_enc_loop
+	jmp	NEAR $L$cbc_done
 ALIGN	16
-$L$cbc_dec_loop::
-	movdqu	xmm0,XMMWORD PTR[rdi]
+$L$cbc_dec_loop:
+	movdqu	xmm0,XMMWORD[rdi]
 	movdqa	xmm7,xmm0
 	call	_vpaes_decrypt_core
 	pxor	xmm0,xmm6
 	movdqa	xmm6,xmm7
-	movdqu	XMMWORD PTR[rdi*1+rsi],xmm0
-	lea	rdi,QWORD PTR[16+rdi]
+	movdqu	XMMWORD[rdi*1+rsi],xmm0
+	lea	rdi,[16+rdi]
 	sub	rcx,16
-	jnc	$L$cbc_dec_loop
-$L$cbc_done::
-	movdqu	XMMWORD PTR[r8],xmm6
-	movaps	xmm6,XMMWORD PTR[16+rsp]
-	movaps	xmm7,XMMWORD PTR[32+rsp]
-	movaps	xmm8,XMMWORD PTR[48+rsp]
-	movaps	xmm9,XMMWORD PTR[64+rsp]
-	movaps	xmm10,XMMWORD PTR[80+rsp]
-	movaps	xmm11,XMMWORD PTR[96+rsp]
-	movaps	xmm12,XMMWORD PTR[112+rsp]
-	movaps	xmm13,XMMWORD PTR[128+rsp]
-	movaps	xmm14,XMMWORD PTR[144+rsp]
-	movaps	xmm15,XMMWORD PTR[160+rsp]
-	lea	rsp,QWORD PTR[184+rsp]
-$L$cbc_epilogue::
-$L$cbc_abort::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	jnc	NEAR $L$cbc_dec_loop
+$L$cbc_done:
+	movdqu	XMMWORD[r8],xmm6
+	movaps	xmm6,XMMWORD[16+rsp]
+	movaps	xmm7,XMMWORD[32+rsp]
+	movaps	xmm8,XMMWORD[48+rsp]
+	movaps	xmm9,XMMWORD[64+rsp]
+	movaps	xmm10,XMMWORD[80+rsp]
+	movaps	xmm11,XMMWORD[96+rsp]
+	movaps	xmm12,XMMWORD[112+rsp]
+	movaps	xmm13,XMMWORD[128+rsp]
+	movaps	xmm14,XMMWORD[144+rsp]
+	movaps	xmm15,XMMWORD[160+rsp]
+	lea	rsp,[184+rsp]
+$L$cbc_epilogue:
+$L$cbc_abort:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_vpaes_cbc_encrypt::
-vpaes_cbc_encrypt	ENDP
+$L$SEH_end_vpaes_cbc_encrypt:
 
 
 
@@ -894,17 +893,17 @@
 
 
 ALIGN	16
-_vpaes_preheat	PROC PRIVATE
-	lea	r10,QWORD PTR[$L$k_s0F]
-	movdqa	xmm10,XMMWORD PTR[((-32))+r10]
-	movdqa	xmm11,XMMWORD PTR[((-16))+r10]
-	movdqa	xmm9,XMMWORD PTR[r10]
-	movdqa	xmm13,XMMWORD PTR[48+r10]
-	movdqa	xmm12,XMMWORD PTR[64+r10]
-	movdqa	xmm15,XMMWORD PTR[80+r10]
-	movdqa	xmm14,XMMWORD PTR[96+r10]
+_vpaes_preheat:
+	lea	r10,[$L$k_s0F]
+	movdqa	xmm10,XMMWORD[((-32))+r10]
+	movdqa	xmm11,XMMWORD[((-16))+r10]
+	movdqa	xmm9,XMMWORD[r10]
+	movdqa	xmm13,XMMWORD[48+r10]
+	movdqa	xmm12,XMMWORD[64+r10]
+	movdqa	xmm15,XMMWORD[80+r10]
+	movdqa	xmm14,XMMWORD[96+r10]
 	DB	0F3h,0C3h		;repret
-_vpaes_preheat	ENDP
+
 
 
 
@@ -912,100 +911,100 @@
 
 
 ALIGN	64
-_vpaes_consts::
-$L$k_inv::
-	DQ	00E05060F0D080180h,0040703090A0B0C02h
-	DQ	001040A060F0B0780h,0030D0E0C02050809h
+_vpaes_consts:
+$L$k_inv:
+	DQ	0x0E05060F0D080180,0x040703090A0B0C02
+	DQ	0x01040A060F0B0780,0x030D0E0C02050809
 
-$L$k_s0F::
-	DQ	00F0F0F0F0F0F0F0Fh,00F0F0F0F0F0F0F0Fh
+$L$k_s0F:
+	DQ	0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
 
-$L$k_ipt::
-	DQ	0C2B2E8985A2A7000h,0CABAE09052227808h
-	DQ	04C01307D317C4D00h,0CD80B1FCB0FDCC81h
+$L$k_ipt:
+	DQ	0xC2B2E8985A2A7000,0xCABAE09052227808
+	DQ	0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
 
-$L$k_sb1::
-	DQ	0B19BE18FCB503E00h,0A5DF7A6E142AF544h
-	DQ	03618D415FAE22300h,03BF7CCC10D2ED9EFh
-$L$k_sb2::
-	DQ	0E27A93C60B712400h,05EB7E955BC982FCDh
-	DQ	069EB88400AE12900h,0C2A163C8AB82234Ah
-$L$k_sbo::
-	DQ	0D0D26D176FBDC700h,015AABF7AC502A878h
-	DQ	0CFE474A55FBB6A00h,08E1E90D1412B35FAh
+$L$k_sb1:
+	DQ	0xB19BE18FCB503E00,0xA5DF7A6E142AF544
+	DQ	0x3618D415FAE22300,0x3BF7CCC10D2ED9EF
+$L$k_sb2:
+	DQ	0xE27A93C60B712400,0x5EB7E955BC982FCD
+	DQ	0x69EB88400AE12900,0xC2A163C8AB82234A
+$L$k_sbo:
+	DQ	0xD0D26D176FBDC700,0x15AABF7AC502A878
+	DQ	0xCFE474A55FBB6A00,0x8E1E90D1412B35FA
 
-$L$k_mc_forward::
-	DQ	00407060500030201h,00C0F0E0D080B0A09h
-	DQ	0080B0A0904070605h,0000302010C0F0E0Dh
-	DQ	00C0F0E0D080B0A09h,00407060500030201h
-	DQ	0000302010C0F0E0Dh,0080B0A0904070605h
+$L$k_mc_forward:
+	DQ	0x0407060500030201,0x0C0F0E0D080B0A09
+	DQ	0x080B0A0904070605,0x000302010C0F0E0D
+	DQ	0x0C0F0E0D080B0A09,0x0407060500030201
+	DQ	0x000302010C0F0E0D,0x080B0A0904070605
 
-$L$k_mc_backward::
-	DQ	00605040702010003h,00E0D0C0F0A09080Bh
-	DQ	0020100030E0D0C0Fh,00A09080B06050407h
-	DQ	00E0D0C0F0A09080Bh,00605040702010003h
-	DQ	00A09080B06050407h,0020100030E0D0C0Fh
+$L$k_mc_backward:
+	DQ	0x0605040702010003,0x0E0D0C0F0A09080B
+	DQ	0x020100030E0D0C0F,0x0A09080B06050407
+	DQ	0x0E0D0C0F0A09080B,0x0605040702010003
+	DQ	0x0A09080B06050407,0x020100030E0D0C0F
 
-$L$k_sr::
-	DQ	00706050403020100h,00F0E0D0C0B0A0908h
-	DQ	0030E09040F0A0500h,00B06010C07020D08h
-	DQ	00F060D040B020900h,0070E050C030A0108h
-	DQ	00B0E0104070A0D00h,00306090C0F020508h
+$L$k_sr:
+	DQ	0x0706050403020100,0x0F0E0D0C0B0A0908
+	DQ	0x030E09040F0A0500,0x0B06010C07020D08
+	DQ	0x0F060D040B020900,0x070E050C030A0108
+	DQ	0x0B0E0104070A0D00,0x0306090C0F020508
 
-$L$k_rcon::
-	DQ	01F8391B9AF9DEEB6h,0702A98084D7C7D81h
+$L$k_rcon:
+	DQ	0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
 
-$L$k_s63::
-	DQ	05B5B5B5B5B5B5B5Bh,05B5B5B5B5B5B5B5Bh
+$L$k_s63:
+	DQ	0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
 
-$L$k_opt::
-	DQ	0FF9F4929D6B66000h,0F7974121DEBE6808h
-	DQ	001EDBD5150BCEC00h,0E10D5DB1B05C0CE0h
+$L$k_opt:
+	DQ	0xFF9F4929D6B66000,0xF7974121DEBE6808
+	DQ	0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
 
-$L$k_deskew::
-	DQ	007E4A34047A4E300h,01DFEB95A5DBEF91Ah
-	DQ	05F36B5DC83EA6900h,02841C2ABF49D1E77h
+$L$k_deskew:
+	DQ	0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
+	DQ	0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
 
 
 
 
 
-$L$k_dksd::
-	DQ	0FEB91A5DA3E44700h,00740E3A45A1DBEF9h
-	DQ	041C277F4B5368300h,05FDC69EAAB289D1Eh
-$L$k_dksb::
-	DQ	09A4FCA1F8550D500h,003D653861CC94C99h
-	DQ	0115BEDA7B6FC4A00h,0D993256F7E3482C8h
-$L$k_dkse::
-	DQ	0D5031CCA1FC9D600h,053859A4C994F5086h
-	DQ	0A23196054FDC7BE8h,0CD5EF96A20B31487h
-$L$k_dks9::
-	DQ	0B6116FC87ED9A700h,04AED933482255BFCh
-	DQ	04576516227143300h,08BB89FACE9DAFDCEh
+$L$k_dksd:
+	DQ	0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9
+	DQ	0x41C277F4B5368300,0x5FDC69EAAB289D1E
+$L$k_dksb:
+	DQ	0x9A4FCA1F8550D500,0x03D653861CC94C99
+	DQ	0x115BEDA7B6FC4A00,0xD993256F7E3482C8
+$L$k_dkse:
+	DQ	0xD5031CCA1FC9D600,0x53859A4C994F5086
+	DQ	0xA23196054FDC7BE8,0xCD5EF96A20B31487
+$L$k_dks9:
+	DQ	0xB6116FC87ED9A700,0x4AED933482255BFC
+	DQ	0x4576516227143300,0x8BB89FACE9DAFDCE
 
 
 
 
 
-$L$k_dipt::
-	DQ	00F505B040B545F00h,0154A411E114E451Ah
-	DQ	086E383E660056500h,012771772F491F194h
+$L$k_dipt:
+	DQ	0x0F505B040B545F00,0x154A411E114E451A
+	DQ	0x86E383E660056500,0x12771772F491F194
 
-$L$k_dsb9::
-	DQ	0851C03539A86D600h,0CAD51F504F994CC9h
-	DQ	0C03B1789ECD74900h,0725E2C9EB2FBA565h
-$L$k_dsbd::
-	DQ	07D57CCDFE6B1A200h,0F56E9B13882A4439h
-	DQ	03CE2FAF724C6CB00h,02931180D15DEEFD3h
-$L$k_dsbb::
-	DQ	0D022649296B44200h,0602646F6B0F2D404h
-	DQ	0C19498A6CD596700h,0F3FF0C3E3255AA6Bh
-$L$k_dsbe::
-	DQ	046F2929626D4D000h,02242600464B4F6B0h
-	DQ	00C55A6CDFFAAC100h,09467F36B98593E32h
-$L$k_dsbo::
-	DQ	01387EA537EF94000h,0C7AA6DB9D4943E2Dh
-	DQ	012D7560F93441D00h,0CA4B8159D8C58E9Ch
+$L$k_dsb9:
+	DQ	0x851C03539A86D600,0xCAD51F504F994CC9
+	DQ	0xC03B1789ECD74900,0x725E2C9EB2FBA565
+$L$k_dsbd:
+	DQ	0x7D57CCDFE6B1A200,0xF56E9B13882A4439
+	DQ	0x3CE2FAF724C6CB00,0x2931180D15DEEFD3
+$L$k_dsbb:
+	DQ	0xD022649296B44200,0x602646F6B0F2D404
+	DQ	0xC19498A6CD596700,0xF3FF0C3E3255AA6B
+$L$k_dsbe:
+	DQ	0x46F2929626D4D000,0x2242600464B4F6B0
+	DQ	0x0C55A6CDFFAAC100,0x9467F36B98593E32
+$L$k_dsbo:
+	DQ	0x1387EA537EF94000,0xC7AA6DB9D4943E2D
+	DQ	0x12D7560F93441D00,0xCA4B8159D8C58E9C
 DB	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
 DB	111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54
 DB	52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97
@@ -1013,10 +1012,10 @@
 DB	85,110,105,118,101,114,115,105,116,121,41,0
 ALIGN	64
 
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1028,55 +1027,55 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	lea	rsi,QWORD PTR[16+rax]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[16+rax]
+	lea	rdi,[512+r8]
 	mov	ecx,20
-	DD	0a548f3fch
-	lea	rax,QWORD PTR[184+rax]
+	DD	0xa548f3fc
+	lea	rax,[184+rax]
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -1090,54 +1089,49 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_vpaes_set_encrypt_key
-	DD	imagerel $L$SEH_end_vpaes_set_encrypt_key
-	DD	imagerel $L$SEH_info_vpaes_set_encrypt_key
+	DD	$L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase
+	DD	$L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase
+	DD	$L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_vpaes_set_decrypt_key
-	DD	imagerel $L$SEH_end_vpaes_set_decrypt_key
-	DD	imagerel $L$SEH_info_vpaes_set_decrypt_key
+	DD	$L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase
+	DD	$L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase
+	DD	$L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_vpaes_encrypt
-	DD	imagerel $L$SEH_end_vpaes_encrypt
-	DD	imagerel $L$SEH_info_vpaes_encrypt
+	DD	$L$SEH_begin_vpaes_encrypt wrt ..imagebase
+	DD	$L$SEH_end_vpaes_encrypt wrt ..imagebase
+	DD	$L$SEH_info_vpaes_encrypt wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_vpaes_decrypt
-	DD	imagerel $L$SEH_end_vpaes_decrypt
-	DD	imagerel $L$SEH_info_vpaes_decrypt
+	DD	$L$SEH_begin_vpaes_decrypt wrt ..imagebase
+	DD	$L$SEH_end_vpaes_decrypt wrt ..imagebase
+	DD	$L$SEH_info_vpaes_decrypt wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_vpaes_cbc_encrypt
-	DD	imagerel $L$SEH_end_vpaes_cbc_encrypt
-	DD	imagerel $L$SEH_info_vpaes_cbc_encrypt
+	DD	$L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase
+	DD	$L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase
+	DD	$L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_vpaes_set_encrypt_key::
+$L$SEH_info_vpaes_set_encrypt_key:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$enc_key_body,imagerel $L$enc_key_epilogue
-$L$SEH_info_vpaes_set_decrypt_key::
+	DD	se_handler wrt ..imagebase
+	DD	$L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase
+$L$SEH_info_vpaes_set_decrypt_key:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$dec_key_body,imagerel $L$dec_key_epilogue
-$L$SEH_info_vpaes_encrypt::
+	DD	se_handler wrt ..imagebase
+	DD	$L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase
+$L$SEH_info_vpaes_encrypt:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$enc_body,imagerel $L$enc_epilogue
-$L$SEH_info_vpaes_decrypt::
+	DD	se_handler wrt ..imagebase
+	DD	$L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase
+$L$SEH_info_vpaes_decrypt:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$dec_body,imagerel $L$dec_epilogue
-$L$SEH_info_vpaes_cbc_encrypt::
+	DD	se_handler wrt ..imagebase
+	DD	$L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase
+$L$SEH_info_vpaes_cbc_encrypt:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$cbc_body,imagerel $L$cbc_epilogue
-
-.xdata	ENDS
-END
+	DD	se_handler wrt ..imagebase
+	DD	$L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/bn/modexp512-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/bn/modexp512-x86_64.asm
index d3e4a61..f3b306e 100644
--- a/third_party/boringssl/win-x86_64/crypto/bn/modexp512-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/bn/modexp512-x86_64.asm
@@ -1,17 +1,21 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
+
 
 
 ALIGN	16
-MULADD_128x512	PROC PRIVATE
-	mov	rax,QWORD PTR[rsi]
+MULADD_128x512:
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
-	mov	QWORD PTR[rcx],r8
+	mov	QWORD[rcx],r8
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -19,7 +23,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -27,7 +31,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -35,7 +39,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -43,7 +47,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -51,7 +55,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -59,22 +63,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
 	add	r15,rbx
 	adc	rdx,0
 	mov	r8,rdx
-	mov	rbp,QWORD PTR[8+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[8+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
-	mov	QWORD PTR[8+rcx],r9
+	mov	QWORD[8+rcx],r9
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -82,7 +86,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -90,7 +94,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -98,7 +102,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -106,7 +110,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -114,7 +118,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -122,7 +126,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -130,95 +134,95 @@
 	adc	rdx,0
 	mov	r9,rdx
 	DB	0F3h,0C3h		;repret
-MULADD_128x512	ENDP
+
 
 ALIGN	16
-mont_reduce	PROC PRIVATE
-	lea	rdi,QWORD PTR[192+rsp]
-	mov	rsi,QWORD PTR[32+rsp]
+mont_reduce:
+	lea	rdi,[192+rsp]
+	mov	rsi,QWORD[32+rsp]
 	add	rsi,576
-	lea	rcx,QWORD PTR[520+rsp]
+	lea	rcx,[520+rsp]
 
-	mov	rbp,QWORD PTR[96+rcx]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[96+rcx]
+	mov	rax,QWORD[rsi]
 	mul	rbp
-	mov	r8,QWORD PTR[rcx]
+	mov	r8,QWORD[rcx]
 	add	r8,rax
 	adc	rdx,0
-	mov	QWORD PTR[rdi],r8
+	mov	QWORD[rdi],r8
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
-	mov	r9,QWORD PTR[8+rcx]
+	mov	r9,QWORD[8+rcx]
 	add	r9,rax
 	adc	rdx,0
 	add	r9,rbx
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
-	mov	r10,QWORD PTR[16+rcx]
+	mov	r10,QWORD[16+rcx]
 	add	r10,rax
 	adc	rdx,0
 	add	r10,rbx
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
-	mov	r11,QWORD PTR[24+rcx]
+	mov	r11,QWORD[24+rcx]
 	add	r11,rax
 	adc	rdx,0
 	add	r11,rbx
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
-	mov	r12,QWORD PTR[32+rcx]
+	mov	r12,QWORD[32+rcx]
 	add	r12,rax
 	adc	rdx,0
 	add	r12,rbx
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
-	mov	r13,QWORD PTR[40+rcx]
+	mov	r13,QWORD[40+rcx]
 	add	r13,rax
 	adc	rdx,0
 	add	r13,rbx
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
-	mov	r14,QWORD PTR[48+rcx]
+	mov	r14,QWORD[48+rcx]
 	add	r14,rax
 	adc	rdx,0
 	add	r14,rbx
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
-	mov	r15,QWORD PTR[56+rcx]
+	mov	r15,QWORD[56+rcx]
 	add	r15,rax
 	adc	rdx,0
 	add	r15,rbx
 	adc	rdx,0
 	mov	r8,rdx
-	mov	rbp,QWORD PTR[104+rcx]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[104+rcx]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
-	mov	QWORD PTR[8+rdi],r9
+	mov	QWORD[8+rdi],r9
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -226,7 +230,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -234,7 +238,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -242,7 +246,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -250,7 +254,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -258,7 +262,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -266,22 +270,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
 	add	r8,rbx
 	adc	rdx,0
 	mov	r9,rdx
-	mov	rbp,QWORD PTR[112+rcx]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[112+rcx]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
-	mov	QWORD PTR[16+rdi],r10
+	mov	QWORD[16+rdi],r10
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -289,7 +293,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -297,7 +301,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -305,7 +309,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -313,7 +317,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -321,7 +325,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -329,22 +333,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
 	add	r9,rbx
 	adc	rdx,0
 	mov	r10,rdx
-	mov	rbp,QWORD PTR[120+rcx]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[120+rcx]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
-	mov	QWORD PTR[24+rdi],r11
+	mov	QWORD[24+rdi],r11
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -352,7 +356,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -360,7 +364,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -368,7 +372,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -376,7 +380,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -384,7 +388,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -392,7 +396,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -401,26 +405,26 @@
 	mov	r11,rdx
 	xor	rax,rax
 
-	add	r8,QWORD PTR[64+rcx]
-	adc	r9,QWORD PTR[72+rcx]
-	adc	r10,QWORD PTR[80+rcx]
-	adc	r11,QWORD PTR[88+rcx]
+	add	r8,QWORD[64+rcx]
+	adc	r9,QWORD[72+rcx]
+	adc	r10,QWORD[80+rcx]
+	adc	r11,QWORD[88+rcx]
 	adc	rax,0
 
 
 
 
-	mov	QWORD PTR[64+rdi],r8
-	mov	QWORD PTR[72+rdi],r9
+	mov	QWORD[64+rdi],r8
+	mov	QWORD[72+rdi],r9
 	mov	rbp,r10
-	mov	QWORD PTR[88+rdi],r11
+	mov	QWORD[88+rdi],r11
 
-	mov	QWORD PTR[384+rsp],rax
+	mov	QWORD[384+rsp],rax
 
-	mov	r8,QWORD PTR[rdi]
-	mov	r9,QWORD PTR[8+rdi]
-	mov	r10,QWORD PTR[16+rdi]
-	mov	r11,QWORD PTR[24+rdi]
+	mov	r8,QWORD[rdi]
+	mov	r9,QWORD[8+rdi]
+	mov	r10,QWORD[16+rdi]
+	mov	r11,QWORD[24+rdi]
 
 
 
@@ -432,67 +436,67 @@
 	add	rdi,8*10
 
 	add	rsi,64
-	lea	rcx,QWORD PTR[296+rsp]
+	lea	rcx,[296+rsp]
 
 	call	MULADD_128x512
 
-	mov	rax,QWORD PTR[384+rsp]
+	mov	rax,QWORD[384+rsp]
 
 
-	add	r8,QWORD PTR[((-16))+rdi]
-	adc	r9,QWORD PTR[((-8))+rdi]
-	mov	QWORD PTR[64+rcx],r8
-	mov	QWORD PTR[72+rcx],r9
+	add	r8,QWORD[((-16))+rdi]
+	adc	r9,QWORD[((-8))+rdi]
+	mov	QWORD[64+rcx],r8
+	mov	QWORD[72+rcx],r9
 
 	adc	rax,rax
-	mov	QWORD PTR[384+rsp],rax
+	mov	QWORD[384+rsp],rax
 
-	lea	rdi,QWORD PTR[192+rsp]
+	lea	rdi,[192+rsp]
 	add	rsi,64
 
 
 
 
 
-	mov	r8,QWORD PTR[rsi]
-	mov	rbx,QWORD PTR[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	rbx,QWORD[8+rsi]
 
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	mul	r8
 	mov	rbp,rax
 	mov	r9,rdx
 
-	mov	rax,QWORD PTR[8+rcx]
+	mov	rax,QWORD[8+rcx]
 	mul	r8
 	add	r9,rax
 
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	mul	rbx
 	add	r9,rax
 
-	mov	QWORD PTR[8+rdi],r9
+	mov	QWORD[8+rdi],r9
 
 
 	sub	rsi,192
 
-	mov	r8,QWORD PTR[rcx]
-	mov	r9,QWORD PTR[8+rcx]
+	mov	r8,QWORD[rcx]
+	mov	r9,QWORD[8+rcx]
 
 	call	MULADD_128x512
 
 
 
 
-	mov	rax,QWORD PTR[rsi]
-	mov	rbx,QWORD PTR[8+rsi]
-	mov	rdi,QWORD PTR[16+rsi]
-	mov	rdx,QWORD PTR[24+rsi]
+	mov	rax,QWORD[rsi]
+	mov	rbx,QWORD[8+rsi]
+	mov	rdi,QWORD[16+rsi]
+	mov	rdx,QWORD[24+rsi]
 
 
-	mov	rbp,QWORD PTR[384+rsp]
+	mov	rbp,QWORD[384+rsp]
 
-	add	r8,QWORD PTR[64+rcx]
-	adc	r9,QWORD PTR[72+rcx]
+	add	r8,QWORD[64+rcx]
+	adc	r9,QWORD[72+rcx]
 
 
 	adc	rbp,rbp
@@ -500,20 +504,20 @@
 
 
 	shl	rbp,3
-	mov	rcx,QWORD PTR[32+rsp]
+	mov	rcx,QWORD[32+rsp]
 	add	rbp,rcx
 
 
 	xor	rsi,rsi
 
-	add	r10,QWORD PTR[rbp]
-	adc	r11,QWORD PTR[64+rbp]
-	adc	r12,QWORD PTR[128+rbp]
-	adc	r13,QWORD PTR[192+rbp]
-	adc	r14,QWORD PTR[256+rbp]
-	adc	r15,QWORD PTR[320+rbp]
-	adc	r8,QWORD PTR[384+rbp]
-	adc	r9,QWORD PTR[448+rbp]
+	add	r10,QWORD[rbp]
+	adc	r11,QWORD[64+rbp]
+	adc	r12,QWORD[128+rbp]
+	adc	r13,QWORD[192+rbp]
+	adc	r14,QWORD[256+rbp]
+	adc	r15,QWORD[320+rbp]
+	adc	r8,QWORD[384+rbp]
+	adc	r9,QWORD[448+rbp]
 
 
 
@@ -539,10 +543,10 @@
 
 
 	add	rcx,512
-	mov	rax,QWORD PTR[32+rcx]
-	mov	rbx,QWORD PTR[40+rcx]
-	mov	rdi,QWORD PTR[48+rcx]
-	mov	rdx,QWORD PTR[56+rcx]
+	mov	rax,QWORD[32+rcx]
+	mov	rbx,QWORD[40+rcx]
+	mov	rdi,QWORD[48+rcx]
+	mov	rdx,QWORD[56+rcx]
 
 
 
@@ -562,30 +566,30 @@
 
 
 
-	mov	rsi,QWORD PTR[144+rsp]
-	mov	QWORD PTR[rsi],r10
-	mov	QWORD PTR[8+rsi],r11
-	mov	QWORD PTR[16+rsi],r12
-	mov	QWORD PTR[24+rsi],r13
-	mov	QWORD PTR[32+rsi],r14
-	mov	QWORD PTR[40+rsi],r15
-	mov	QWORD PTR[48+rsi],r8
-	mov	QWORD PTR[56+rsi],r9
+	mov	rsi,QWORD[144+rsp]
+	mov	QWORD[rsi],r10
+	mov	QWORD[8+rsi],r11
+	mov	QWORD[16+rsi],r12
+	mov	QWORD[24+rsi],r13
+	mov	QWORD[32+rsi],r14
+	mov	QWORD[40+rsi],r15
+	mov	QWORD[48+rsi],r8
+	mov	QWORD[56+rsi],r9
 
 	DB	0F3h,0C3h		;repret
-mont_reduce	ENDP
+
 
 ALIGN	16
-mont_mul_a3b	PROC PRIVATE
+mont_mul_a3b:
 
 
 
 
-	mov	rbp,QWORD PTR[rdi]
+	mov	rbp,QWORD[rdi]
 
 	mov	rax,r10
 	mul	rbp
-	mov	QWORD PTR[520+rsp],rax
+	mov	QWORD[520+rsp],rax
 	mov	r10,rdx
 	mov	rax,r11
 	mul	rbp
@@ -622,15 +626,15 @@
 	add	r8,rax
 	adc	rdx,0
 	mov	r9,rdx
-	mov	rbp,QWORD PTR[8+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[8+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
-	mov	QWORD PTR[528+rsp],r10
+	mov	QWORD[528+rsp],r10
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -638,7 +642,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -646,7 +650,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -654,7 +658,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -662,7 +666,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -670,7 +674,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -678,22 +682,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
 	add	r9,rbx
 	adc	rdx,0
 	mov	r10,rdx
-	mov	rbp,QWORD PTR[16+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[16+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
-	mov	QWORD PTR[536+rsp],r11
+	mov	QWORD[536+rsp],r11
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -701,7 +705,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -709,7 +713,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -717,7 +721,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -725,7 +729,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -733,7 +737,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -741,22 +745,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
 	add	r10,rbx
 	adc	rdx,0
 	mov	r11,rdx
-	mov	rbp,QWORD PTR[24+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[24+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
-	mov	QWORD PTR[544+rsp],r12
+	mov	QWORD[544+rsp],r12
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -764,7 +768,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -772,7 +776,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -780,7 +784,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -788,7 +792,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -796,7 +800,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -804,22 +808,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
 	add	r11,rbx
 	adc	rdx,0
 	mov	r12,rdx
-	mov	rbp,QWORD PTR[32+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[32+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
-	mov	QWORD PTR[552+rsp],r13
+	mov	QWORD[552+rsp],r13
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -827,7 +831,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -835,7 +839,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -843,7 +847,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -851,7 +855,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -859,7 +863,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -867,22 +871,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
 	add	r12,rbx
 	adc	rdx,0
 	mov	r13,rdx
-	mov	rbp,QWORD PTR[40+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[40+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
-	mov	QWORD PTR[560+rsp],r14
+	mov	QWORD[560+rsp],r14
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
@@ -890,7 +894,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -898,7 +902,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -906,7 +910,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -914,7 +918,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -922,7 +926,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -930,22 +934,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
 	add	r13,rbx
 	adc	rdx,0
 	mov	r14,rdx
-	mov	rbp,QWORD PTR[48+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[48+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
-	mov	QWORD PTR[568+rsp],r15
+	mov	QWORD[568+rsp],r15
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
@@ -953,7 +957,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -961,7 +965,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -969,7 +973,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -977,7 +981,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -985,7 +989,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -993,22 +997,22 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
 	add	r14,rbx
 	adc	rdx,0
 	mov	r15,rdx
-	mov	rbp,QWORD PTR[56+rdi]
-	mov	rax,QWORD PTR[rsi]
+	mov	rbp,QWORD[56+rdi]
+	mov	rax,QWORD[rsi]
 	mul	rbp
 	add	r8,rax
 	adc	rdx,0
-	mov	QWORD PTR[576+rsp],r8
+	mov	QWORD[576+rsp],r8
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	mul	rbp
 	add	r9,rax
 	adc	rdx,0
@@ -1016,7 +1020,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	rbp
 	add	r10,rax
 	adc	rdx,0
@@ -1024,7 +1028,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	rbp
 	add	r11,rax
 	adc	rdx,0
@@ -1032,7 +1036,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	rbp
 	add	r12,rax
 	adc	rdx,0
@@ -1040,7 +1044,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	rbp
 	add	r13,rax
 	adc	rdx,0
@@ -1048,7 +1052,7 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	rbp
 	add	r14,rax
 	adc	rdx,0
@@ -1056,34 +1060,34 @@
 	adc	rdx,0
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rbp
 	add	r15,rax
 	adc	rdx,0
 	add	r15,rbx
 	adc	rdx,0
 	mov	r8,rdx
-	mov	QWORD PTR[584+rsp],r9
-	mov	QWORD PTR[592+rsp],r10
-	mov	QWORD PTR[600+rsp],r11
-	mov	QWORD PTR[608+rsp],r12
-	mov	QWORD PTR[616+rsp],r13
-	mov	QWORD PTR[624+rsp],r14
-	mov	QWORD PTR[632+rsp],r15
-	mov	QWORD PTR[640+rsp],r8
+	mov	QWORD[584+rsp],r9
+	mov	QWORD[592+rsp],r10
+	mov	QWORD[600+rsp],r11
+	mov	QWORD[608+rsp],r12
+	mov	QWORD[616+rsp],r13
+	mov	QWORD[624+rsp],r14
+	mov	QWORD[632+rsp],r15
+	mov	QWORD[640+rsp],r8
 
 
 
 
 
-	jmp	mont_reduce
+	jmp	NEAR mont_reduce
 
 
-mont_mul_a3b	ENDP
+
 
 ALIGN	16
-sqr_reduce	PROC PRIVATE
-	mov	rcx,QWORD PTR[16+rsp]
+sqr_reduce:
+	mov	rcx,QWORD[16+rsp]
 
 
 
@@ -1091,7 +1095,7 @@
 
 	mov	rax,r11
 	mul	rbx
-	mov	QWORD PTR[528+rsp],rax
+	mov	QWORD[528+rsp],rax
 	mov	r10,rdx
 	mov	rax,r12
 	mul	rbx
@@ -1124,31 +1128,31 @@
 	adc	rdx,0
 	mov	rsi,rdx
 
-	mov	QWORD PTR[536+rsp],r10
+	mov	QWORD[536+rsp],r10
 
 
 
 
 
-	mov	rbx,QWORD PTR[8+rcx]
+	mov	rbx,QWORD[8+rcx]
 
-	mov	rax,QWORD PTR[16+rcx]
+	mov	rax,QWORD[16+rcx]
 	mul	rbx
 	add	r11,rax
 	adc	rdx,0
-	mov	QWORD PTR[544+rsp],r11
+	mov	QWORD[544+rsp],r11
 
 	mov	r10,rdx
-	mov	rax,QWORD PTR[24+rcx]
+	mov	rax,QWORD[24+rcx]
 	mul	rbx
 	add	r12,rax
 	adc	rdx,0
 	add	r12,r10
 	adc	rdx,0
-	mov	QWORD PTR[552+rsp],r12
+	mov	QWORD[552+rsp],r12
 
 	mov	r10,rdx
-	mov	rax,QWORD PTR[32+rcx]
+	mov	rax,QWORD[32+rcx]
 	mul	rbx
 	add	r13,rax
 	adc	rdx,0
@@ -1156,7 +1160,7 @@
 	adc	rdx,0
 
 	mov	r10,rdx
-	mov	rax,QWORD PTR[40+rcx]
+	mov	rax,QWORD[40+rcx]
 	mul	rbx
 	add	r14,rax
 	adc	rdx,0
@@ -1184,25 +1188,25 @@
 
 
 
-	mov	rbx,QWORD PTR[16+rcx]
+	mov	rbx,QWORD[16+rcx]
 
-	mov	rax,QWORD PTR[24+rcx]
+	mov	rax,QWORD[24+rcx]
 	mul	rbx
 	add	r13,rax
 	adc	rdx,0
-	mov	QWORD PTR[560+rsp],r13
+	mov	QWORD[560+rsp],r13
 
 	mov	r10,rdx
-	mov	rax,QWORD PTR[32+rcx]
+	mov	rax,QWORD[32+rcx]
 	mul	rbx
 	add	r14,rax
 	adc	rdx,0
 	add	r14,r10
 	adc	rdx,0
-	mov	QWORD PTR[568+rsp],r14
+	mov	QWORD[568+rsp],r14
 
 	mov	r10,rdx
-	mov	rax,QWORD PTR[40+rcx]
+	mov	rax,QWORD[40+rcx]
 	mul	rbx
 	add	r15,rax
 	adc	rdx,0
@@ -1231,22 +1235,22 @@
 
 
 
-	mov	rbx,QWORD PTR[24+rcx]
+	mov	rbx,QWORD[24+rcx]
 
-	mov	rax,QWORD PTR[32+rcx]
+	mov	rax,QWORD[32+rcx]
 	mul	rbx
 	add	r15,rax
 	adc	rdx,0
-	mov	QWORD PTR[576+rsp],r15
+	mov	QWORD[576+rsp],r15
 
 	mov	r10,rdx
-	mov	rax,QWORD PTR[40+rcx]
+	mov	rax,QWORD[40+rcx]
 	mul	rbx
 	add	rsi,rax
 	adc	rdx,0
 	add	rsi,r10
 	adc	rdx,0
-	mov	QWORD PTR[584+rsp],rsi
+	mov	QWORD[584+rsp],rsi
 
 	mov	r10,rdx
 	mov	rax,r8
@@ -1269,13 +1273,13 @@
 
 
 
-	mov	rbx,QWORD PTR[32+rcx]
+	mov	rbx,QWORD[32+rcx]
 
-	mov	rax,QWORD PTR[40+rcx]
+	mov	rax,QWORD[40+rcx]
 	mul	rbx
 	add	r11,rax
 	adc	rdx,0
-	mov	QWORD PTR[592+rsp],r11
+	mov	QWORD[592+rsp],r11
 
 	mov	r10,rdx
 	mov	rax,r8
@@ -1284,7 +1288,7 @@
 	adc	rdx,0
 	add	r12,r10
 	adc	rdx,0
-	mov	QWORD PTR[600+rsp],r12
+	mov	QWORD[600+rsp],r12
 
 	mov	r10,rdx
 	mov	rax,r9
@@ -1299,13 +1303,13 @@
 
 
 
-	mov	rbx,QWORD PTR[40+rcx]
+	mov	rbx,QWORD[40+rcx]
 
 	mov	rax,r8
 	mul	rbx
 	add	r15,rax
 	adc	rdx,0
-	mov	QWORD PTR[608+rsp],r15
+	mov	QWORD[608+rsp],r15
 
 	mov	r10,rdx
 	mov	rax,r9
@@ -1314,7 +1318,7 @@
 	adc	rdx,0
 	add	r11,r10
 	adc	rdx,0
-	mov	QWORD PTR[616+rsp],r11
+	mov	QWORD[616+rsp],r11
 
 	mov	r12,rdx
 
@@ -1327,19 +1331,19 @@
 	mul	rbx
 	add	r12,rax
 	adc	rdx,0
-	mov	QWORD PTR[624+rsp],r12
+	mov	QWORD[624+rsp],r12
 
-	mov	QWORD PTR[632+rsp],rdx
+	mov	QWORD[632+rsp],rdx
 
 
-	mov	r10,QWORD PTR[528+rsp]
-	mov	r11,QWORD PTR[536+rsp]
-	mov	r12,QWORD PTR[544+rsp]
-	mov	r13,QWORD PTR[552+rsp]
-	mov	r14,QWORD PTR[560+rsp]
-	mov	r15,QWORD PTR[568+rsp]
+	mov	r10,QWORD[528+rsp]
+	mov	r11,QWORD[536+rsp]
+	mov	r12,QWORD[544+rsp]
+	mov	r13,QWORD[552+rsp]
+	mov	r14,QWORD[560+rsp]
+	mov	r15,QWORD[568+rsp]
 
-	mov	rax,QWORD PTR[24+rcx]
+	mov	rax,QWORD[24+rcx]
 	mul	rax
 	mov	rdi,rax
 	mov	r8,rdx
@@ -1352,12 +1356,12 @@
 	adc	r15,r15
 	adc	r8,0
 
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	mul	rax
-	mov	QWORD PTR[520+rsp],rax
+	mov	QWORD[520+rsp],rax
 	mov	rbx,rdx
 
-	mov	rax,QWORD PTR[8+rcx]
+	mov	rax,QWORD[8+rcx]
 	mul	rax
 
 	add	r10,rbx
@@ -1365,10 +1369,10 @@
 	adc	rdx,0
 
 	mov	rbx,rdx
-	mov	QWORD PTR[528+rsp],r10
-	mov	QWORD PTR[536+rsp],r11
+	mov	QWORD[528+rsp],r10
+	mov	QWORD[536+rsp],r11
 
-	mov	rax,QWORD PTR[16+rcx]
+	mov	rax,QWORD[16+rcx]
 	mul	rax
 
 	add	r12,rbx
@@ -1377,28 +1381,28 @@
 
 	mov	rbx,rdx
 
-	mov	QWORD PTR[544+rsp],r12
-	mov	QWORD PTR[552+rsp],r13
+	mov	QWORD[544+rsp],r12
+	mov	QWORD[552+rsp],r13
 
 	xor	rbp,rbp
 	add	r14,rbx
 	adc	r15,rdi
 	adc	rbp,0
 
-	mov	QWORD PTR[560+rsp],r14
-	mov	QWORD PTR[568+rsp],r15
+	mov	QWORD[560+rsp],r14
+	mov	QWORD[568+rsp],r15
 
 
 
 
-	mov	r10,QWORD PTR[576+rsp]
-	mov	r11,QWORD PTR[584+rsp]
-	mov	r12,QWORD PTR[592+rsp]
-	mov	r13,QWORD PTR[600+rsp]
-	mov	r14,QWORD PTR[608+rsp]
-	mov	r15,QWORD PTR[616+rsp]
-	mov	rdi,QWORD PTR[624+rsp]
-	mov	rsi,QWORD PTR[632+rsp]
+	mov	r10,QWORD[576+rsp]
+	mov	r11,QWORD[584+rsp]
+	mov	r12,QWORD[592+rsp]
+	mov	r13,QWORD[600+rsp]
+	mov	r14,QWORD[608+rsp]
+	mov	r15,QWORD[616+rsp]
+	mov	rdi,QWORD[624+rsp]
+	mov	rsi,QWORD[632+rsp]
 
 	mov	rax,r9
 	mul	rax
@@ -1417,7 +1421,7 @@
 
 	add	r10,rbp
 
-	mov	rax,QWORD PTR[32+rcx]
+	mov	rax,QWORD[32+rcx]
 	mul	rax
 
 	add	r10,r8
@@ -1426,10 +1430,10 @@
 
 	mov	rbp,rdx
 
-	mov	QWORD PTR[576+rsp],r10
-	mov	QWORD PTR[584+rsp],r11
+	mov	QWORD[576+rsp],r10
+	mov	QWORD[584+rsp],r11
 
-	mov	rax,QWORD PTR[40+rcx]
+	mov	rax,QWORD[40+rcx]
 	mul	rax
 
 	add	r12,rbp
@@ -1438,38 +1442,38 @@
 
 	mov	rbp,rdx
 
-	mov	QWORD PTR[592+rsp],r12
-	mov	QWORD PTR[600+rsp],r13
+	mov	QWORD[592+rsp],r12
+	mov	QWORD[600+rsp],r13
 
-	mov	rax,QWORD PTR[48+rcx]
+	mov	rax,QWORD[48+rcx]
 	mul	rax
 
 	add	r14,rbp
 	adc	r15,rax
 	adc	rdx,0
 
-	mov	QWORD PTR[608+rsp],r14
-	mov	QWORD PTR[616+rsp],r15
+	mov	QWORD[608+rsp],r14
+	mov	QWORD[616+rsp],r15
 
 	add	rdi,rdx
 	adc	rsi,r9
 	adc	rbx,0
 
-	mov	QWORD PTR[624+rsp],rdi
-	mov	QWORD PTR[632+rsp],rsi
-	mov	QWORD PTR[640+rsp],rbx
+	mov	QWORD[624+rsp],rdi
+	mov	QWORD[632+rsp],rsi
+	mov	QWORD[640+rsp],rbx
 
-	jmp	mont_reduce
+	jmp	NEAR mont_reduce
 
 
-sqr_reduce	ENDP
-PUBLIC	mod_exp_512
 
-mod_exp_512	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+global	mod_exp_512
+
+mod_exp_512:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_mod_exp_512::
+$L$SEH_begin_mod_exp_512:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -1489,306 +1493,305 @@
 	and	rsp,-64
 
 
-	mov	QWORD PTR[rsp],r8
-	mov	QWORD PTR[8+rsp],rdi
-	mov	QWORD PTR[16+rsp],rsi
-	mov	QWORD PTR[24+rsp],rcx
-$L$body::
+	mov	QWORD[rsp],r8
+	mov	QWORD[8+rsp],rdi
+	mov	QWORD[16+rsp],rsi
+	mov	QWORD[24+rsp],rcx
+$L$body:
 
 
 
 	pxor	xmm4,xmm4
-	movdqu	xmm0,XMMWORD PTR[rsi]
-	movdqu	xmm1,XMMWORD PTR[16+rsi]
-	movdqu	xmm2,XMMWORD PTR[32+rsi]
-	movdqu	xmm3,XMMWORD PTR[48+rsi]
-	movdqa	XMMWORD PTR[512+rsp],xmm4
-	movdqa	XMMWORD PTR[528+rsp],xmm4
-	movdqa	XMMWORD PTR[608+rsp],xmm4
-	movdqa	XMMWORD PTR[624+rsp],xmm4
-	movdqa	XMMWORD PTR[544+rsp],xmm0
-	movdqa	XMMWORD PTR[560+rsp],xmm1
-	movdqa	XMMWORD PTR[576+rsp],xmm2
-	movdqa	XMMWORD PTR[592+rsp],xmm3
+	movdqu	xmm0,XMMWORD[rsi]
+	movdqu	xmm1,XMMWORD[16+rsi]
+	movdqu	xmm2,XMMWORD[32+rsi]
+	movdqu	xmm3,XMMWORD[48+rsi]
+	movdqa	XMMWORD[512+rsp],xmm4
+	movdqa	XMMWORD[528+rsp],xmm4
+	movdqa	XMMWORD[608+rsp],xmm4
+	movdqa	XMMWORD[624+rsp],xmm4
+	movdqa	XMMWORD[544+rsp],xmm0
+	movdqa	XMMWORD[560+rsp],xmm1
+	movdqa	XMMWORD[576+rsp],xmm2
+	movdqa	XMMWORD[592+rsp],xmm3
 
 
-	movdqu	xmm0,XMMWORD PTR[rdx]
-	movdqu	xmm1,XMMWORD PTR[16+rdx]
-	movdqu	xmm2,XMMWORD PTR[32+rdx]
-	movdqu	xmm3,XMMWORD PTR[48+rdx]
+	movdqu	xmm0,XMMWORD[rdx]
+	movdqu	xmm1,XMMWORD[16+rdx]
+	movdqu	xmm2,XMMWORD[32+rdx]
+	movdqu	xmm3,XMMWORD[48+rdx]
 
-	lea	rbx,QWORD PTR[384+rsp]
-	mov	QWORD PTR[136+rsp],rbx
+	lea	rbx,[384+rsp]
+	mov	QWORD[136+rsp],rbx
 	call	mont_reduce
 
 
-	lea	rcx,QWORD PTR[448+rsp]
+	lea	rcx,[448+rsp]
 	xor	rax,rax
-	mov	QWORD PTR[rcx],rax
-	mov	QWORD PTR[8+rcx],rax
-	mov	QWORD PTR[24+rcx],rax
-	mov	QWORD PTR[32+rcx],rax
-	mov	QWORD PTR[40+rcx],rax
-	mov	QWORD PTR[48+rcx],rax
-	mov	QWORD PTR[56+rcx],rax
-	mov	QWORD PTR[128+rsp],rax
-	mov	QWORD PTR[16+rcx],1
+	mov	QWORD[rcx],rax
+	mov	QWORD[8+rcx],rax
+	mov	QWORD[24+rcx],rax
+	mov	QWORD[32+rcx],rax
+	mov	QWORD[40+rcx],rax
+	mov	QWORD[48+rcx],rax
+	mov	QWORD[56+rcx],rax
+	mov	QWORD[128+rsp],rax
+	mov	QWORD[16+rcx],1
 
-	lea	rbp,QWORD PTR[640+rsp]
+	lea	rbp,[640+rsp]
 	mov	rsi,rcx
 	mov	rdi,rbp
 	mov	rax,8
-loop_0::
-	mov	rbx,QWORD PTR[rcx]
-	mov	WORD PTR[rdi],bx
+loop_0:
+	mov	rbx,QWORD[rcx]
+	mov	WORD[rdi],bx
 	shr	rbx,16
-	mov	WORD PTR[64+rdi],bx
+	mov	WORD[64+rdi],bx
 	shr	rbx,16
-	mov	WORD PTR[128+rdi],bx
+	mov	WORD[128+rdi],bx
 	shr	rbx,16
-	mov	WORD PTR[192+rdi],bx
-	lea	rcx,QWORD PTR[8+rcx]
-	lea	rdi,QWORD PTR[256+rdi]
+	mov	WORD[192+rdi],bx
+	lea	rcx,[8+rcx]
+	lea	rdi,[256+rdi]
 	dec	rax
-	jnz	loop_0
+	jnz	NEAR loop_0
 	mov	rax,31
-	mov	QWORD PTR[32+rsp],rax
-	mov	QWORD PTR[40+rsp],rbp
+	mov	QWORD[32+rsp],rax
+	mov	QWORD[40+rsp],rbp
 
-	mov	QWORD PTR[136+rsp],rsi
-	mov	r10,QWORD PTR[rsi]
-	mov	r11,QWORD PTR[8+rsi]
-	mov	r12,QWORD PTR[16+rsi]
-	mov	r13,QWORD PTR[24+rsi]
-	mov	r14,QWORD PTR[32+rsi]
-	mov	r15,QWORD PTR[40+rsi]
-	mov	r8,QWORD PTR[48+rsi]
-	mov	r9,QWORD PTR[56+rsi]
-init_loop::
-	lea	rdi,QWORD PTR[384+rsp]
+	mov	QWORD[136+rsp],rsi
+	mov	r10,QWORD[rsi]
+	mov	r11,QWORD[8+rsi]
+	mov	r12,QWORD[16+rsi]
+	mov	r13,QWORD[24+rsi]
+	mov	r14,QWORD[32+rsi]
+	mov	r15,QWORD[40+rsi]
+	mov	r8,QWORD[48+rsi]
+	mov	r9,QWORD[56+rsi]
+init_loop:
+	lea	rdi,[384+rsp]
 	call	mont_mul_a3b
-	lea	rsi,QWORD PTR[448+rsp]
-	mov	rbp,QWORD PTR[40+rsp]
+	lea	rsi,[448+rsp]
+	mov	rbp,QWORD[40+rsp]
 	add	rbp,2
-	mov	QWORD PTR[40+rsp],rbp
+	mov	QWORD[40+rsp],rbp
 	mov	rcx,rsi
 	mov	rax,8
-loop_1::
-	mov	rbx,QWORD PTR[rcx]
-	mov	WORD PTR[rbp],bx
+loop_1:
+	mov	rbx,QWORD[rcx]
+	mov	WORD[rbp],bx
 	shr	rbx,16
-	mov	WORD PTR[64+rbp],bx
+	mov	WORD[64+rbp],bx
 	shr	rbx,16
-	mov	WORD PTR[128+rbp],bx
+	mov	WORD[128+rbp],bx
 	shr	rbx,16
-	mov	WORD PTR[192+rbp],bx
-	lea	rcx,QWORD PTR[8+rcx]
-	lea	rbp,QWORD PTR[256+rbp]
+	mov	WORD[192+rbp],bx
+	lea	rcx,[8+rcx]
+	lea	rbp,[256+rbp]
 	dec	rax
-	jnz	loop_1
-	mov	rax,QWORD PTR[32+rsp]
+	jnz	NEAR loop_1
+	mov	rax,QWORD[32+rsp]
 	sub	rax,1
-	mov	QWORD PTR[32+rsp],rax
-	jne	init_loop
+	mov	QWORD[32+rsp],rax
+	jne	NEAR init_loop
 
 
 
-	movdqa	XMMWORD PTR[64+rsp],xmm0
-	movdqa	XMMWORD PTR[80+rsp],xmm1
-	movdqa	XMMWORD PTR[96+rsp],xmm2
-	movdqa	XMMWORD PTR[112+rsp],xmm3
+	movdqa	XMMWORD[64+rsp],xmm0
+	movdqa	XMMWORD[80+rsp],xmm1
+	movdqa	XMMWORD[96+rsp],xmm2
+	movdqa	XMMWORD[112+rsp],xmm3
 
 
 
 
 
-	mov	eax,DWORD PTR[126+rsp]
+	mov	eax,DWORD[126+rsp]
 	mov	rdx,rax
 	shr	rax,11
-	and	edx,007FFh
-	mov	DWORD PTR[126+rsp],edx
-	lea	rsi,QWORD PTR[640+rax*2+rsp]
-	mov	rdx,QWORD PTR[8+rsp]
+	and	edx,0x07FF
+	mov	DWORD[126+rsp],edx
+	lea	rsi,[640+rax*2+rsp]
+	mov	rdx,QWORD[8+rsp]
 	mov	rbp,4
-loop_2::
-	movzx	rbx,WORD PTR[192+rsi]
-	movzx	rax,WORD PTR[448+rsi]
+loop_2:
+	movzx	rbx,WORD[192+rsi]
+	movzx	rax,WORD[448+rsi]
 	shl	rbx,16
 	shl	rax,16
-	mov	bx,WORD PTR[128+rsi]
-	mov	ax,WORD PTR[384+rsi]
+	mov	bx,WORD[128+rsi]
+	mov	ax,WORD[384+rsi]
 	shl	rbx,16
 	shl	rax,16
-	mov	bx,WORD PTR[64+rsi]
-	mov	ax,WORD PTR[320+rsi]
+	mov	bx,WORD[64+rsi]
+	mov	ax,WORD[320+rsi]
 	shl	rbx,16
 	shl	rax,16
-	mov	bx,WORD PTR[rsi]
-	mov	ax,WORD PTR[256+rsi]
-	mov	QWORD PTR[rdx],rbx
-	mov	QWORD PTR[8+rdx],rax
-	lea	rsi,QWORD PTR[512+rsi]
-	lea	rdx,QWORD PTR[16+rdx]
+	mov	bx,WORD[rsi]
+	mov	ax,WORD[256+rsi]
+	mov	QWORD[rdx],rbx
+	mov	QWORD[8+rdx],rax
+	lea	rsi,[512+rsi]
+	lea	rdx,[16+rdx]
 	sub	rbp,1
-	jnz	loop_2
-	mov	QWORD PTR[48+rsp],505
+	jnz	NEAR loop_2
+	mov	QWORD[48+rsp],505
 
-	mov	rcx,QWORD PTR[8+rsp]
-	mov	QWORD PTR[136+rsp],rcx
-	mov	r10,QWORD PTR[rcx]
-	mov	r11,QWORD PTR[8+rcx]
-	mov	r12,QWORD PTR[16+rcx]
-	mov	r13,QWORD PTR[24+rcx]
-	mov	r14,QWORD PTR[32+rcx]
-	mov	r15,QWORD PTR[40+rcx]
-	mov	r8,QWORD PTR[48+rcx]
-	mov	r9,QWORD PTR[56+rcx]
-	jmp	sqr_2
+	mov	rcx,QWORD[8+rsp]
+	mov	QWORD[136+rsp],rcx
+	mov	r10,QWORD[rcx]
+	mov	r11,QWORD[8+rcx]
+	mov	r12,QWORD[16+rcx]
+	mov	r13,QWORD[24+rcx]
+	mov	r14,QWORD[32+rcx]
+	mov	r15,QWORD[40+rcx]
+	mov	r8,QWORD[48+rcx]
+	mov	r9,QWORD[56+rcx]
+	jmp	NEAR sqr_2
 
-main_loop_a3b::
+main_loop_a3b:
 	call	sqr_reduce
 	call	sqr_reduce
 	call	sqr_reduce
-sqr_2::
+sqr_2:
 	call	sqr_reduce
 	call	sqr_reduce
 
 
 
-	mov	rcx,QWORD PTR[48+rsp]
+	mov	rcx,QWORD[48+rsp]
 	mov	rax,rcx
 	shr	rax,4
-	mov	edx,DWORD PTR[64+rax*2+rsp]
+	mov	edx,DWORD[64+rax*2+rsp]
 	and	rcx,15
 	shr	rdx,cl
-	and	rdx,01Fh
+	and	rdx,0x1F
 
-	lea	rsi,QWORD PTR[640+rdx*2+rsp]
-	lea	rdx,QWORD PTR[448+rsp]
+	lea	rsi,[640+rdx*2+rsp]
+	lea	rdx,[448+rsp]
 	mov	rdi,rdx
 	mov	rbp,4
-loop_3::
-	movzx	rbx,WORD PTR[192+rsi]
-	movzx	rax,WORD PTR[448+rsi]
+loop_3:
+	movzx	rbx,WORD[192+rsi]
+	movzx	rax,WORD[448+rsi]
 	shl	rbx,16
 	shl	rax,16
-	mov	bx,WORD PTR[128+rsi]
-	mov	ax,WORD PTR[384+rsi]
+	mov	bx,WORD[128+rsi]
+	mov	ax,WORD[384+rsi]
 	shl	rbx,16
 	shl	rax,16
-	mov	bx,WORD PTR[64+rsi]
-	mov	ax,WORD PTR[320+rsi]
+	mov	bx,WORD[64+rsi]
+	mov	ax,WORD[320+rsi]
 	shl	rbx,16
 	shl	rax,16
-	mov	bx,WORD PTR[rsi]
-	mov	ax,WORD PTR[256+rsi]
-	mov	QWORD PTR[rdx],rbx
-	mov	QWORD PTR[8+rdx],rax
-	lea	rsi,QWORD PTR[512+rsi]
-	lea	rdx,QWORD PTR[16+rdx]
+	mov	bx,WORD[rsi]
+	mov	ax,WORD[256+rsi]
+	mov	QWORD[rdx],rbx
+	mov	QWORD[8+rdx],rax
+	lea	rsi,[512+rsi]
+	lea	rdx,[16+rdx]
 	sub	rbp,1
-	jnz	loop_3
-	mov	rsi,QWORD PTR[8+rsp]
+	jnz	NEAR loop_3
+	mov	rsi,QWORD[8+rsp]
 	call	mont_mul_a3b
 
 
 
-	mov	rcx,QWORD PTR[48+rsp]
+	mov	rcx,QWORD[48+rsp]
 	sub	rcx,5
-	mov	QWORD PTR[48+rsp],rcx
-	jge	main_loop_a3b
+	mov	QWORD[48+rsp],rcx
+	jge	NEAR main_loop_a3b
 
 
 
-end_main_loop_a3b::
+end_main_loop_a3b:
 
 
-	mov	rdx,QWORD PTR[8+rsp]
+	mov	rdx,QWORD[8+rsp]
 	pxor	xmm4,xmm4
-	movdqu	xmm0,XMMWORD PTR[rdx]
-	movdqu	xmm1,XMMWORD PTR[16+rdx]
-	movdqu	xmm2,XMMWORD PTR[32+rdx]
-	movdqu	xmm3,XMMWORD PTR[48+rdx]
-	movdqa	XMMWORD PTR[576+rsp],xmm4
-	movdqa	XMMWORD PTR[592+rsp],xmm4
-	movdqa	XMMWORD PTR[608+rsp],xmm4
-	movdqa	XMMWORD PTR[624+rsp],xmm4
-	movdqa	XMMWORD PTR[512+rsp],xmm0
-	movdqa	XMMWORD PTR[528+rsp],xmm1
-	movdqa	XMMWORD PTR[544+rsp],xmm2
-	movdqa	XMMWORD PTR[560+rsp],xmm3
+	movdqu	xmm0,XMMWORD[rdx]
+	movdqu	xmm1,XMMWORD[16+rdx]
+	movdqu	xmm2,XMMWORD[32+rdx]
+	movdqu	xmm3,XMMWORD[48+rdx]
+	movdqa	XMMWORD[576+rsp],xmm4
+	movdqa	XMMWORD[592+rsp],xmm4
+	movdqa	XMMWORD[608+rsp],xmm4
+	movdqa	XMMWORD[624+rsp],xmm4
+	movdqa	XMMWORD[512+rsp],xmm0
+	movdqa	XMMWORD[528+rsp],xmm1
+	movdqa	XMMWORD[544+rsp],xmm2
+	movdqa	XMMWORD[560+rsp],xmm3
 	call	mont_reduce
 
 
 
-	mov	rax,QWORD PTR[8+rsp]
-	mov	r8,QWORD PTR[rax]
-	mov	r9,QWORD PTR[8+rax]
-	mov	r10,QWORD PTR[16+rax]
-	mov	r11,QWORD PTR[24+rax]
-	mov	r12,QWORD PTR[32+rax]
-	mov	r13,QWORD PTR[40+rax]
-	mov	r14,QWORD PTR[48+rax]
-	mov	r15,QWORD PTR[56+rax]
+	mov	rax,QWORD[8+rsp]
+	mov	r8,QWORD[rax]
+	mov	r9,QWORD[8+rax]
+	mov	r10,QWORD[16+rax]
+	mov	r11,QWORD[24+rax]
+	mov	r12,QWORD[32+rax]
+	mov	r13,QWORD[40+rax]
+	mov	r14,QWORD[48+rax]
+	mov	r15,QWORD[56+rax]
 
 
-	mov	rbx,QWORD PTR[24+rsp]
+	mov	rbx,QWORD[24+rsp]
 	add	rbx,512
 
-	sub	r8,QWORD PTR[rbx]
-	sbb	r9,QWORD PTR[8+rbx]
-	sbb	r10,QWORD PTR[16+rbx]
-	sbb	r11,QWORD PTR[24+rbx]
-	sbb	r12,QWORD PTR[32+rbx]
-	sbb	r13,QWORD PTR[40+rbx]
-	sbb	r14,QWORD PTR[48+rbx]
-	sbb	r15,QWORD PTR[56+rbx]
+	sub	r8,QWORD[rbx]
+	sbb	r9,QWORD[8+rbx]
+	sbb	r10,QWORD[16+rbx]
+	sbb	r11,QWORD[24+rbx]
+	sbb	r12,QWORD[32+rbx]
+	sbb	r13,QWORD[40+rbx]
+	sbb	r14,QWORD[48+rbx]
+	sbb	r15,QWORD[56+rbx]
 
 
-	mov	rsi,QWORD PTR[rax]
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rcx,QWORD PTR[16+rax]
-	mov	rdx,QWORD PTR[24+rax]
+	mov	rsi,QWORD[rax]
+	mov	rdi,QWORD[8+rax]
+	mov	rcx,QWORD[16+rax]
+	mov	rdx,QWORD[24+rax]
 	cmovnc	rsi,r8
 	cmovnc	rdi,r9
 	cmovnc	rcx,r10
 	cmovnc	rdx,r11
-	mov	QWORD PTR[rax],rsi
-	mov	QWORD PTR[8+rax],rdi
-	mov	QWORD PTR[16+rax],rcx
-	mov	QWORD PTR[24+rax],rdx
+	mov	QWORD[rax],rsi
+	mov	QWORD[8+rax],rdi
+	mov	QWORD[16+rax],rcx
+	mov	QWORD[24+rax],rdx
 
-	mov	rsi,QWORD PTR[32+rax]
-	mov	rdi,QWORD PTR[40+rax]
-	mov	rcx,QWORD PTR[48+rax]
-	mov	rdx,QWORD PTR[56+rax]
+	mov	rsi,QWORD[32+rax]
+	mov	rdi,QWORD[40+rax]
+	mov	rcx,QWORD[48+rax]
+	mov	rdx,QWORD[56+rax]
 	cmovnc	rsi,r12
 	cmovnc	rdi,r13
 	cmovnc	rcx,r14
 	cmovnc	rdx,r15
-	mov	QWORD PTR[32+rax],rsi
-	mov	QWORD PTR[40+rax],rdi
-	mov	QWORD PTR[48+rax],rcx
-	mov	QWORD PTR[56+rax],rdx
+	mov	QWORD[32+rax],rsi
+	mov	QWORD[40+rax],rdi
+	mov	QWORD[48+rax],rcx
+	mov	QWORD[56+rax],rdx
 
-	mov	rsi,QWORD PTR[rsp]
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbx,QWORD PTR[32+rsi]
-	mov	rbp,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rsi,QWORD[rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbx,QWORD[32+rsi]
+	mov	rbp,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_mod_exp_512::
-mod_exp_512	ENDP
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+$L$SEH_end_mod_exp_512:
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-mod_exp_512_se_handler	PROC PRIVATE
+mod_exp_512_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1800,60 +1803,60 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$body]
+	lea	r10,[$L$body]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[rax]
+	mov	rax,QWORD[rax]
 
-	mov	rbx,QWORD PTR[32+rax]
-	mov	rbp,QWORD PTR[40+rax]
-	mov	r12,QWORD PTR[24+rax]
-	mov	r13,QWORD PTR[16+rax]
-	mov	r14,QWORD PTR[8+rax]
-	mov	r15,QWORD PTR[rax]
-	lea	rax,QWORD PTR[48+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[32+rax]
+	mov	rbp,QWORD[40+rax]
+	mov	r12,QWORD[24+rax]
+	mov	r13,QWORD[16+rax]
+	mov	r14,QWORD[8+rax]
+	mov	r15,QWORD[rax]
+	lea	rax,[48+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -1867,21 +1870,16 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-mod_exp_512_se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_mod_exp_512
-	DD	imagerel $L$SEH_end_mod_exp_512
-	DD	imagerel $L$SEH_info_mod_exp_512
+	DD	$L$SEH_begin_mod_exp_512 wrt ..imagebase
+	DD	$L$SEH_end_mod_exp_512 wrt ..imagebase
+	DD	$L$SEH_info_mod_exp_512 wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_mod_exp_512::
+$L$SEH_info_mod_exp_512:
 DB	9,0,0,0
-	DD	imagerel mod_exp_512_se_handler
-
-.xdata	ENDS
-END
+	DD	mod_exp_512_se_handler wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/bn/rsaz-avx2.asm b/third_party/boringssl/win-x86_64/crypto/bn/rsaz-avx2.asm
index f9188f5..45d0fd4 100644
--- a/third_party/boringssl/win-x86_64/crypto/bn/rsaz-avx2.asm
+++ b/third_party/boringssl/win-x86_64/crypto/bn/rsaz-avx2.asm
@@ -1,29 +1,30 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-PUBLIC	rsaz_avx2_eligible
 
-rsaz_avx2_eligible	PROC PUBLIC
+global	rsaz_avx2_eligible
+
+rsaz_avx2_eligible:
 	xor	eax,eax
 	DB	0F3h,0C3h		;repret
-rsaz_avx2_eligible	ENDP
 
-PUBLIC	rsaz_1024_sqr_avx2
-PUBLIC	rsaz_1024_mul_avx2
-PUBLIC	rsaz_1024_norm2red_avx2
-PUBLIC	rsaz_1024_red2norm_avx2
-PUBLIC	rsaz_1024_scatter5_avx2
-PUBLIC	rsaz_1024_gather5_avx2
 
-rsaz_1024_sqr_avx2	PROC PUBLIC
-rsaz_1024_mul_avx2::
-rsaz_1024_norm2red_avx2::
-rsaz_1024_red2norm_avx2::
-rsaz_1024_scatter5_avx2::
-rsaz_1024_gather5_avx2::
-DB	00fh,00bh
+global	rsaz_1024_sqr_avx2
+global	rsaz_1024_mul_avx2
+global	rsaz_1024_norm2red_avx2
+global	rsaz_1024_red2norm_avx2
+global	rsaz_1024_scatter5_avx2
+global	rsaz_1024_gather5_avx2
+
+rsaz_1024_sqr_avx2:
+rsaz_1024_mul_avx2:
+rsaz_1024_norm2red_avx2:
+rsaz_1024_red2norm_avx2:
+rsaz_1024_scatter5_avx2:
+rsaz_1024_gather5_avx2:
+DB	0x0f,0x0b
 	DB	0F3h,0C3h		;repret
-rsaz_1024_sqr_avx2	ENDP
 
-.text$	ENDS
-END
diff --git a/third_party/boringssl/win-x86_64/crypto/bn/rsaz-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/bn/rsaz-x86_64.asm
index 86e828d..04d5e39 100644
--- a/third_party/boringssl/win-x86_64/crypto/bn/rsaz-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/bn/rsaz-x86_64.asm
@@ -1,21 +1,25 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-EXTERN	OPENSSL_ia32cap_P:NEAR
 
-PUBLIC	rsaz_512_sqr
+EXTERN	OPENSSL_ia32cap_P
+
+global	rsaz_512_sqr
 
 ALIGN	32
-rsaz_512_sqr	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+rsaz_512_sqr:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_rsaz_512_sqr::
+$L$SEH_begin_rsaz_512_sqr:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
+	mov	r8,QWORD[40+rsp]
 
 
 	push	rbx
@@ -26,50 +30,50 @@
 	push	r15
 
 	sub	rsp,128+24
-$L$sqr_body::
+$L$sqr_body:
 	mov	rbp,rdx
-	mov	rdx,QWORD PTR[rsi]
-	mov	rax,QWORD PTR[8+rsi]
-	mov	QWORD PTR[128+rsp],rcx
-	jmp	$L$oop_sqr
+	mov	rdx,QWORD[rsi]
+	mov	rax,QWORD[8+rsi]
+	mov	QWORD[128+rsp],rcx
+	jmp	NEAR $L$oop_sqr
 
 ALIGN	32
-$L$oop_sqr::
-	mov	DWORD PTR[((128+8))+rsp],r8d
+$L$oop_sqr:
+	mov	DWORD[((128+8))+rsp],r8d
 
 	mov	rbx,rdx
 	mul	rdx
 	mov	r8,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mov	r9,rdx
 
 	mul	rbx
 	add	r9,rax
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mov	r10,rdx
 	adc	r10,0
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mov	r11,rdx
 	adc	r11,0
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mov	r12,rdx
 	adc	r12,0
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mov	r13,rdx
 	adc	r13,0
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mov	r14,rdx
 	adc	r14,0
 
@@ -84,25 +88,25 @@
 	adc	r9,r9
 
 	mul	rax
-	mov	QWORD PTR[rsp],rax
+	mov	QWORD[rsp],rax
 	add	r8,rdx
 	adc	r9,0
 
-	mov	QWORD PTR[8+rsp],r8
+	mov	QWORD[8+rsp],r8
 	shr	rcx,63
 
 
-	mov	r8,QWORD PTR[8+rsi]
-	mov	rax,QWORD PTR[16+rsi]
+	mov	r8,QWORD[8+rsi]
+	mov	rax,QWORD[16+rsi]
 	mul	r8
 	add	r10,rax
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mov	rbx,rdx
 	adc	rbx,0
 
 	mul	r8
 	add	r11,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	adc	rdx,0
 	add	r11,rbx
 	mov	rbx,rdx
@@ -110,7 +114,7 @@
 
 	mul	r8
 	add	r12,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	adc	rdx,0
 	add	r12,rbx
 	mov	rbx,rdx
@@ -118,7 +122,7 @@
 
 	mul	r8
 	add	r13,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	adc	rdx,0
 	add	r13,rbx
 	mov	rbx,rdx
@@ -126,7 +130,7 @@
 
 	mul	r8
 	add	r14,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	adc	rdx,0
 	add	r14,rbx
 	mov	rbx,rdx
@@ -142,7 +146,7 @@
 	adc	r8,0
 
 	add	rdx,rdx
-	lea	r10,QWORD PTR[r10*2+rcx]
+	lea	r10,[r10*2+rcx]
 	mov	rbx,r11
 	adc	r11,r11
 
@@ -151,22 +155,22 @@
 	adc	r10,rdx
 	adc	r11,0
 
-	mov	QWORD PTR[16+rsp],r9
-	mov	QWORD PTR[24+rsp],r10
+	mov	QWORD[16+rsp],r9
+	mov	QWORD[24+rsp],r10
 	shr	rbx,63
 
 
-	mov	r9,QWORD PTR[16+rsi]
-	mov	rax,QWORD PTR[24+rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	rax,QWORD[24+rsi]
 	mul	r9
 	add	r12,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mov	rcx,rdx
 	adc	rcx,0
 
 	mul	r9
 	add	r13,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	adc	rdx,0
 	add	r13,rcx
 	mov	rcx,rdx
@@ -174,7 +178,7 @@
 
 	mul	r9
 	add	r14,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	adc	rdx,0
 	add	r14,rcx
 	mov	rcx,rdx
@@ -182,9 +186,9 @@
 
 	mul	r9
 	mov	r10,r12
-	lea	r12,QWORD PTR[r12*2+rbx]
+	lea	r12,[r12*2+rbx]
 	add	r15,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	adc	rdx,0
 	add	r15,rcx
 	mov	rcx,rdx
@@ -200,29 +204,29 @@
 	adc	r9,0
 
 	mov	rcx,r13
-	lea	r13,QWORD PTR[r13*2+r10]
+	lea	r13,[r13*2+r10]
 
 	mul	rax
 	add	r11,rax
 	adc	r12,rdx
 	adc	r13,0
 
-	mov	QWORD PTR[32+rsp],r11
-	mov	QWORD PTR[40+rsp],r12
+	mov	QWORD[32+rsp],r11
+	mov	QWORD[40+rsp],r12
 	shr	rcx,63
 
 
-	mov	r10,QWORD PTR[24+rsi]
-	mov	rax,QWORD PTR[32+rsi]
+	mov	r10,QWORD[24+rsi]
+	mov	rax,QWORD[32+rsi]
 	mul	r10
 	add	r14,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mov	rbx,rdx
 	adc	rbx,0
 
 	mul	r10
 	add	r15,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	adc	rdx,0
 	add	r15,rbx
 	mov	rbx,rdx
@@ -230,9 +234,9 @@
 
 	mul	r10
 	mov	r12,r14
-	lea	r14,QWORD PTR[r14*2+rcx]
+	lea	r14,[r14*2+rcx]
 	add	r8,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	adc	rdx,0
 	add	r8,rbx
 	mov	rbx,rdx
@@ -248,32 +252,32 @@
 	adc	r10,0
 
 	mov	rbx,r15
-	lea	r15,QWORD PTR[r15*2+r12]
+	lea	r15,[r15*2+r12]
 
 	mul	rax
 	add	r13,rax
 	adc	r14,rdx
 	adc	r15,0
 
-	mov	QWORD PTR[48+rsp],r13
-	mov	QWORD PTR[56+rsp],r14
+	mov	QWORD[48+rsp],r13
+	mov	QWORD[56+rsp],r14
 	shr	rbx,63
 
 
-	mov	r11,QWORD PTR[32+rsi]
-	mov	rax,QWORD PTR[40+rsi]
+	mov	r11,QWORD[32+rsi]
+	mov	rax,QWORD[40+rsi]
 	mul	r11
 	add	r8,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mov	rcx,rdx
 	adc	rcx,0
 
 	mul	r11
 	add	r9,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	adc	rdx,0
 	mov	r12,r8
-	lea	r8,QWORD PTR[r8*2+rbx]
+	lea	r8,[r8*2+rbx]
 	add	r9,rcx
 	mov	rcx,rdx
 	adc	rcx,0
@@ -288,23 +292,23 @@
 	adc	r11,0
 
 	mov	rcx,r9
-	lea	r9,QWORD PTR[r9*2+r12]
+	lea	r9,[r9*2+r12]
 
 	mul	rax
 	add	r15,rax
 	adc	r8,rdx
 	adc	r9,0
 
-	mov	QWORD PTR[64+rsp],r15
-	mov	QWORD PTR[72+rsp],r8
+	mov	QWORD[64+rsp],r15
+	mov	QWORD[72+rsp],r8
 	shr	rcx,63
 
 
-	mov	r12,QWORD PTR[40+rsi]
-	mov	rax,QWORD PTR[48+rsi]
+	mov	r12,QWORD[40+rsi]
+	mov	rax,QWORD[48+rsi]
 	mul	r12
 	add	r10,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mov	rbx,rdx
 	adc	rbx,0
 
@@ -312,7 +316,7 @@
 	add	r11,rax
 	mov	rax,r12
 	mov	r15,r10
-	lea	r10,QWORD PTR[r10*2+rcx]
+	lea	r10,[r10*2+rcx]
 	adc	rdx,0
 	shr	r15,63
 	add	r11,rbx
@@ -320,19 +324,19 @@
 	adc	r12,0
 
 	mov	rbx,r11
-	lea	r11,QWORD PTR[r11*2+r15]
+	lea	r11,[r11*2+r15]
 
 	mul	rax
 	add	r9,rax
 	adc	r10,rdx
 	adc	r11,0
 
-	mov	QWORD PTR[80+rsp],r9
-	mov	QWORD PTR[88+rsp],r10
+	mov	QWORD[80+rsp],r9
+	mov	QWORD[88+rsp],r10
 
 
-	mov	r13,QWORD PTR[48+rsi]
-	mov	rax,QWORD PTR[56+rsi]
+	mov	r13,QWORD[48+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	r13
 	add	r12,rax
 	mov	rax,r13
@@ -350,78 +354,77 @@
 	adc	r12,rdx
 	adc	r13,0
 
-	mov	QWORD PTR[96+rsp],r11
-	mov	QWORD PTR[104+rsp],r12
+	mov	QWORD[96+rsp],r11
+	mov	QWORD[104+rsp],r12
 
 
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mul	rax
 	add	r13,rax
 	adc	rdx,0
 
 	add	r14,rdx
 
-	mov	QWORD PTR[112+rsp],r13
-	mov	QWORD PTR[120+rsp],r14
+	mov	QWORD[112+rsp],r13
+	mov	QWORD[120+rsp],r14
 
-	mov	r8,QWORD PTR[rsp]
-	mov	r9,QWORD PTR[8+rsp]
-	mov	r10,QWORD PTR[16+rsp]
-	mov	r11,QWORD PTR[24+rsp]
-	mov	r12,QWORD PTR[32+rsp]
-	mov	r13,QWORD PTR[40+rsp]
-	mov	r14,QWORD PTR[48+rsp]
-	mov	r15,QWORD PTR[56+rsp]
+	mov	r8,QWORD[rsp]
+	mov	r9,QWORD[8+rsp]
+	mov	r10,QWORD[16+rsp]
+	mov	r11,QWORD[24+rsp]
+	mov	r12,QWORD[32+rsp]
+	mov	r13,QWORD[40+rsp]
+	mov	r14,QWORD[48+rsp]
+	mov	r15,QWORD[56+rsp]
 
 	call	__rsaz_512_reduce
 
-	add	r8,QWORD PTR[64+rsp]
-	adc	r9,QWORD PTR[72+rsp]
-	adc	r10,QWORD PTR[80+rsp]
-	adc	r11,QWORD PTR[88+rsp]
-	adc	r12,QWORD PTR[96+rsp]
-	adc	r13,QWORD PTR[104+rsp]
-	adc	r14,QWORD PTR[112+rsp]
-	adc	r15,QWORD PTR[120+rsp]
+	add	r8,QWORD[64+rsp]
+	adc	r9,QWORD[72+rsp]
+	adc	r10,QWORD[80+rsp]
+	adc	r11,QWORD[88+rsp]
+	adc	r12,QWORD[96+rsp]
+	adc	r13,QWORD[104+rsp]
+	adc	r14,QWORD[112+rsp]
+	adc	r15,QWORD[120+rsp]
 	sbb	rcx,rcx
 
 	call	__rsaz_512_subtract
 
 	mov	rdx,r8
 	mov	rax,r9
-	mov	r8d,DWORD PTR[((128+8))+rsp]
+	mov	r8d,DWORD[((128+8))+rsp]
 	mov	rsi,rdi
 
 	dec	r8d
-	jnz	$L$oop_sqr
+	jnz	NEAR $L$oop_sqr
 
-	lea	rax,QWORD PTR[((128+24+48))+rsp]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	rbx,QWORD PTR[((-8))+rax]
-	lea	rsp,QWORD PTR[rax]
-$L$sqr_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	lea	rax,[((128+24+48))+rsp]
+	mov	r15,QWORD[((-48))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	rbx,QWORD[((-8))+rax]
+	lea	rsp,[rax]
+$L$sqr_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_rsaz_512_sqr::
-rsaz_512_sqr	ENDP
-PUBLIC	rsaz_512_mul
+$L$SEH_end_rsaz_512_sqr:
+global	rsaz_512_mul
 
 ALIGN	32
-rsaz_512_mul	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+rsaz_512_mul:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_rsaz_512_mul::
+$L$SEH_begin_rsaz_512_mul:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
+	mov	r8,QWORD[40+rsp]
 
 
 	push	rbx
@@ -432,67 +435,66 @@
 	push	r15
 
 	sub	rsp,128+24
-$L$mul_body::
+$L$mul_body:
 DB	102,72,15,110,199
 DB	102,72,15,110,201
-	mov	QWORD PTR[128+rsp],r8
-	mov	rbx,QWORD PTR[rdx]
+	mov	QWORD[128+rsp],r8
+	mov	rbx,QWORD[rdx]
 	mov	rbp,rdx
 	call	__rsaz_512_mul
 
 DB	102,72,15,126,199
 DB	102,72,15,126,205
 
-	mov	r8,QWORD PTR[rsp]
-	mov	r9,QWORD PTR[8+rsp]
-	mov	r10,QWORD PTR[16+rsp]
-	mov	r11,QWORD PTR[24+rsp]
-	mov	r12,QWORD PTR[32+rsp]
-	mov	r13,QWORD PTR[40+rsp]
-	mov	r14,QWORD PTR[48+rsp]
-	mov	r15,QWORD PTR[56+rsp]
+	mov	r8,QWORD[rsp]
+	mov	r9,QWORD[8+rsp]
+	mov	r10,QWORD[16+rsp]
+	mov	r11,QWORD[24+rsp]
+	mov	r12,QWORD[32+rsp]
+	mov	r13,QWORD[40+rsp]
+	mov	r14,QWORD[48+rsp]
+	mov	r15,QWORD[56+rsp]
 
 	call	__rsaz_512_reduce
-	add	r8,QWORD PTR[64+rsp]
-	adc	r9,QWORD PTR[72+rsp]
-	adc	r10,QWORD PTR[80+rsp]
-	adc	r11,QWORD PTR[88+rsp]
-	adc	r12,QWORD PTR[96+rsp]
-	adc	r13,QWORD PTR[104+rsp]
-	adc	r14,QWORD PTR[112+rsp]
-	adc	r15,QWORD PTR[120+rsp]
+	add	r8,QWORD[64+rsp]
+	adc	r9,QWORD[72+rsp]
+	adc	r10,QWORD[80+rsp]
+	adc	r11,QWORD[88+rsp]
+	adc	r12,QWORD[96+rsp]
+	adc	r13,QWORD[104+rsp]
+	adc	r14,QWORD[112+rsp]
+	adc	r15,QWORD[120+rsp]
 	sbb	rcx,rcx
 
 	call	__rsaz_512_subtract
 
-	lea	rax,QWORD PTR[((128+24+48))+rsp]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	rbx,QWORD PTR[((-8))+rax]
-	lea	rsp,QWORD PTR[rax]
-$L$mul_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	lea	rax,[((128+24+48))+rsp]
+	mov	r15,QWORD[((-48))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	rbx,QWORD[((-8))+rax]
+	lea	rsp,[rax]
+$L$mul_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_rsaz_512_mul::
-rsaz_512_mul	ENDP
-PUBLIC	rsaz_512_mul_gather4
+$L$SEH_end_rsaz_512_mul:
+global	rsaz_512_mul_gather4
 
 ALIGN	32
-rsaz_512_mul_gather4	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+rsaz_512_mul_gather4:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_rsaz_512_mul_gather4::
+$L$SEH_begin_rsaz_512_mul_gather4:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	push	rbx
@@ -504,97 +506,97 @@
 
 	mov	r9d,r9d
 	sub	rsp,128+24
-$L$mul_gather4_body::
-	mov	eax,DWORD PTR[64+r9*4+rdx]
+$L$mul_gather4_body:
+	mov	eax,DWORD[64+r9*4+rdx]
 DB	102,72,15,110,199
-	mov	ebx,DWORD PTR[r9*4+rdx]
+	mov	ebx,DWORD[r9*4+rdx]
 DB	102,72,15,110,201
-	mov	QWORD PTR[128+rsp],r8
+	mov	QWORD[128+rsp],r8
 
 	shl	rax,32
 	or	rbx,rax
-	mov	rax,QWORD PTR[rsi]
-	mov	rcx,QWORD PTR[8+rsi]
-	lea	rbp,QWORD PTR[128+r9*4+rdx]
+	mov	rax,QWORD[rsi]
+	mov	rcx,QWORD[8+rsi]
+	lea	rbp,[128+r9*4+rdx]
 	mul	rbx
-	mov	QWORD PTR[rsp],rax
+	mov	QWORD[rsp],rax
 	mov	rax,rcx
 	mov	r8,rdx
 
 	mul	rbx
-	movd	xmm4,DWORD PTR[rbp]
+	movd	xmm4,DWORD[rbp]
 	add	r8,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mov	r9,rdx
 	adc	r9,0
 
 	mul	rbx
-	movd	xmm5,DWORD PTR[64+rbp]
+	movd	xmm5,DWORD[64+rbp]
 	add	r9,rax
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mov	r10,rdx
 	adc	r10,0
 
 	mul	rbx
 	pslldq	xmm5,4
 	add	r10,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mov	r11,rdx
 	adc	r11,0
 
 	mul	rbx
 	por	xmm4,xmm5
 	add	r11,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mov	r12,rdx
 	adc	r12,0
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mov	r13,rdx
 	adc	r13,0
 
 	mul	rbx
-	lea	rbp,QWORD PTR[128+rbp]
+	lea	rbp,[128+rbp]
 	add	r13,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mov	r14,rdx
 	adc	r14,0
 
 	mul	rbx
 DB	102,72,15,126,227
 	add	r14,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	mov	r15,rdx
 	adc	r15,0
 
-	lea	rdi,QWORD PTR[8+rsp]
+	lea	rdi,[8+rsp]
 	mov	ecx,7
-	jmp	$L$oop_mul_gather
+	jmp	NEAR $L$oop_mul_gather
 
 ALIGN	32
-$L$oop_mul_gather::
+$L$oop_mul_gather:
 	mul	rbx
 	add	r8,rax
-	mov	rax,QWORD PTR[8+rsi]
-	mov	QWORD PTR[rdi],r8
+	mov	rax,QWORD[8+rsi]
+	mov	QWORD[rdi],r8
 	mov	r8,rdx
 	adc	r8,0
 
 	mul	rbx
-	movd	xmm4,DWORD PTR[rbp]
+	movd	xmm4,DWORD[rbp]
 	add	r9,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	adc	rdx,0
 	add	r8,r9
 	mov	r9,rdx
 	adc	r9,0
 
 	mul	rbx
-	movd	xmm5,DWORD PTR[64+rbp]
+	movd	xmm5,DWORD[64+rbp]
 	add	r10,rax
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	adc	rdx,0
 	add	r9,r10
 	mov	r10,rdx
@@ -603,7 +605,7 @@
 	mul	rbx
 	pslldq	xmm5,4
 	add	r11,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	adc	rdx,0
 	add	r10,r11
 	mov	r11,rdx
@@ -612,7 +614,7 @@
 	mul	rbx
 	por	xmm4,xmm5
 	add	r12,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	adc	rdx,0
 	add	r11,r12
 	mov	r12,rdx
@@ -620,7 +622,7 @@
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	adc	rdx,0
 	add	r12,r13
 	mov	r13,rdx
@@ -628,7 +630,7 @@
 
 	mul	rbx
 	add	r14,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	adc	rdx,0
 	add	r13,r14
 	mov	r14,rdx
@@ -637,80 +639,79 @@
 	mul	rbx
 DB	102,72,15,126,227
 	add	r15,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	r14,r15
 	mov	r15,rdx
 	adc	r15,0
 
-	lea	rbp,QWORD PTR[128+rbp]
-	lea	rdi,QWORD PTR[8+rdi]
+	lea	rbp,[128+rbp]
+	lea	rdi,[8+rdi]
 
 	dec	ecx
-	jnz	$L$oop_mul_gather
+	jnz	NEAR $L$oop_mul_gather
 
-	mov	QWORD PTR[rdi],r8
-	mov	QWORD PTR[8+rdi],r9
-	mov	QWORD PTR[16+rdi],r10
-	mov	QWORD PTR[24+rdi],r11
-	mov	QWORD PTR[32+rdi],r12
-	mov	QWORD PTR[40+rdi],r13
-	mov	QWORD PTR[48+rdi],r14
-	mov	QWORD PTR[56+rdi],r15
+	mov	QWORD[rdi],r8
+	mov	QWORD[8+rdi],r9
+	mov	QWORD[16+rdi],r10
+	mov	QWORD[24+rdi],r11
+	mov	QWORD[32+rdi],r12
+	mov	QWORD[40+rdi],r13
+	mov	QWORD[48+rdi],r14
+	mov	QWORD[56+rdi],r15
 
 DB	102,72,15,126,199
 DB	102,72,15,126,205
 
-	mov	r8,QWORD PTR[rsp]
-	mov	r9,QWORD PTR[8+rsp]
-	mov	r10,QWORD PTR[16+rsp]
-	mov	r11,QWORD PTR[24+rsp]
-	mov	r12,QWORD PTR[32+rsp]
-	mov	r13,QWORD PTR[40+rsp]
-	mov	r14,QWORD PTR[48+rsp]
-	mov	r15,QWORD PTR[56+rsp]
+	mov	r8,QWORD[rsp]
+	mov	r9,QWORD[8+rsp]
+	mov	r10,QWORD[16+rsp]
+	mov	r11,QWORD[24+rsp]
+	mov	r12,QWORD[32+rsp]
+	mov	r13,QWORD[40+rsp]
+	mov	r14,QWORD[48+rsp]
+	mov	r15,QWORD[56+rsp]
 
 	call	__rsaz_512_reduce
-	add	r8,QWORD PTR[64+rsp]
-	adc	r9,QWORD PTR[72+rsp]
-	adc	r10,QWORD PTR[80+rsp]
-	adc	r11,QWORD PTR[88+rsp]
-	adc	r12,QWORD PTR[96+rsp]
-	adc	r13,QWORD PTR[104+rsp]
-	adc	r14,QWORD PTR[112+rsp]
-	adc	r15,QWORD PTR[120+rsp]
+	add	r8,QWORD[64+rsp]
+	adc	r9,QWORD[72+rsp]
+	adc	r10,QWORD[80+rsp]
+	adc	r11,QWORD[88+rsp]
+	adc	r12,QWORD[96+rsp]
+	adc	r13,QWORD[104+rsp]
+	adc	r14,QWORD[112+rsp]
+	adc	r15,QWORD[120+rsp]
 	sbb	rcx,rcx
 
 	call	__rsaz_512_subtract
 
-	lea	rax,QWORD PTR[((128+24+48))+rsp]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	rbx,QWORD PTR[((-8))+rax]
-	lea	rsp,QWORD PTR[rax]
-$L$mul_gather4_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	lea	rax,[((128+24+48))+rsp]
+	mov	r15,QWORD[((-48))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	rbx,QWORD[((-8))+rax]
+	lea	rsp,[rax]
+$L$mul_gather4_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_rsaz_512_mul_gather4::
-rsaz_512_mul_gather4	ENDP
-PUBLIC	rsaz_512_mul_scatter4
+$L$SEH_end_rsaz_512_mul_gather4:
+global	rsaz_512_mul_scatter4
 
 ALIGN	32
-rsaz_512_mul_scatter4	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+rsaz_512_mul_scatter4:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_rsaz_512_mul_scatter4::
+$L$SEH_begin_rsaz_512_mul_scatter4:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	push	rbx
@@ -722,90 +723,89 @@
 
 	mov	r9d,r9d
 	sub	rsp,128+24
-$L$mul_scatter4_body::
-	lea	r8,QWORD PTR[r9*4+r8]
+$L$mul_scatter4_body:
+	lea	r8,[r9*4+r8]
 DB	102,72,15,110,199
 DB	102,72,15,110,202
 DB	102,73,15,110,208
-	mov	QWORD PTR[128+rsp],rcx
+	mov	QWORD[128+rsp],rcx
 
 	mov	rbp,rdi
-	mov	rbx,QWORD PTR[rdi]
+	mov	rbx,QWORD[rdi]
 	call	__rsaz_512_mul
 
 DB	102,72,15,126,199
 DB	102,72,15,126,205
 
-	mov	r8,QWORD PTR[rsp]
-	mov	r9,QWORD PTR[8+rsp]
-	mov	r10,QWORD PTR[16+rsp]
-	mov	r11,QWORD PTR[24+rsp]
-	mov	r12,QWORD PTR[32+rsp]
-	mov	r13,QWORD PTR[40+rsp]
-	mov	r14,QWORD PTR[48+rsp]
-	mov	r15,QWORD PTR[56+rsp]
+	mov	r8,QWORD[rsp]
+	mov	r9,QWORD[8+rsp]
+	mov	r10,QWORD[16+rsp]
+	mov	r11,QWORD[24+rsp]
+	mov	r12,QWORD[32+rsp]
+	mov	r13,QWORD[40+rsp]
+	mov	r14,QWORD[48+rsp]
+	mov	r15,QWORD[56+rsp]
 
 	call	__rsaz_512_reduce
-	add	r8,QWORD PTR[64+rsp]
-	adc	r9,QWORD PTR[72+rsp]
-	adc	r10,QWORD PTR[80+rsp]
-	adc	r11,QWORD PTR[88+rsp]
-	adc	r12,QWORD PTR[96+rsp]
-	adc	r13,QWORD PTR[104+rsp]
-	adc	r14,QWORD PTR[112+rsp]
-	adc	r15,QWORD PTR[120+rsp]
+	add	r8,QWORD[64+rsp]
+	adc	r9,QWORD[72+rsp]
+	adc	r10,QWORD[80+rsp]
+	adc	r11,QWORD[88+rsp]
+	adc	r12,QWORD[96+rsp]
+	adc	r13,QWORD[104+rsp]
+	adc	r14,QWORD[112+rsp]
+	adc	r15,QWORD[120+rsp]
 DB	102,72,15,126,214
 	sbb	rcx,rcx
 
 	call	__rsaz_512_subtract
 
-	mov	DWORD PTR[rsi],r8d
+	mov	DWORD[rsi],r8d
 	shr	r8,32
-	mov	DWORD PTR[128+rsi],r9d
+	mov	DWORD[128+rsi],r9d
 	shr	r9,32
-	mov	DWORD PTR[256+rsi],r10d
+	mov	DWORD[256+rsi],r10d
 	shr	r10,32
-	mov	DWORD PTR[384+rsi],r11d
+	mov	DWORD[384+rsi],r11d
 	shr	r11,32
-	mov	DWORD PTR[512+rsi],r12d
+	mov	DWORD[512+rsi],r12d
 	shr	r12,32
-	mov	DWORD PTR[640+rsi],r13d
+	mov	DWORD[640+rsi],r13d
 	shr	r13,32
-	mov	DWORD PTR[768+rsi],r14d
+	mov	DWORD[768+rsi],r14d
 	shr	r14,32
-	mov	DWORD PTR[896+rsi],r15d
+	mov	DWORD[896+rsi],r15d
 	shr	r15,32
-	mov	DWORD PTR[64+rsi],r8d
-	mov	DWORD PTR[192+rsi],r9d
-	mov	DWORD PTR[320+rsi],r10d
-	mov	DWORD PTR[448+rsi],r11d
-	mov	DWORD PTR[576+rsi],r12d
-	mov	DWORD PTR[704+rsi],r13d
-	mov	DWORD PTR[832+rsi],r14d
-	mov	DWORD PTR[960+rsi],r15d
+	mov	DWORD[64+rsi],r8d
+	mov	DWORD[192+rsi],r9d
+	mov	DWORD[320+rsi],r10d
+	mov	DWORD[448+rsi],r11d
+	mov	DWORD[576+rsi],r12d
+	mov	DWORD[704+rsi],r13d
+	mov	DWORD[832+rsi],r14d
+	mov	DWORD[960+rsi],r15d
 
-	lea	rax,QWORD PTR[((128+24+48))+rsp]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	rbx,QWORD PTR[((-8))+rax]
-	lea	rsp,QWORD PTR[rax]
-$L$mul_scatter4_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	lea	rax,[((128+24+48))+rsp]
+	mov	r15,QWORD[((-48))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	rbx,QWORD[((-8))+rax]
+	lea	rsp,[rax]
+$L$mul_scatter4_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_rsaz_512_mul_scatter4::
-rsaz_512_mul_scatter4	ENDP
-PUBLIC	rsaz_512_mul_by_one
+$L$SEH_end_rsaz_512_mul_scatter4:
+global	rsaz_512_mul_by_one
 
 ALIGN	32
-rsaz_512_mul_by_one	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+rsaz_512_mul_by_one:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_rsaz_512_mul_by_one::
+$L$SEH_begin_rsaz_512_mul_by_one:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -820,71 +820,70 @@
 	push	r15
 
 	sub	rsp,128+24
-$L$mul_by_one_body::
+$L$mul_by_one_body:
 	mov	rbp,rdx
-	mov	QWORD PTR[128+rsp],rcx
+	mov	QWORD[128+rsp],rcx
 
-	mov	r8,QWORD PTR[rsi]
+	mov	r8,QWORD[rsi]
 	pxor	xmm0,xmm0
-	mov	r9,QWORD PTR[8+rsi]
-	mov	r10,QWORD PTR[16+rsi]
-	mov	r11,QWORD PTR[24+rsi]
-	mov	r12,QWORD PTR[32+rsi]
-	mov	r13,QWORD PTR[40+rsi]
-	mov	r14,QWORD PTR[48+rsi]
-	mov	r15,QWORD PTR[56+rsi]
+	mov	r9,QWORD[8+rsi]
+	mov	r10,QWORD[16+rsi]
+	mov	r11,QWORD[24+rsi]
+	mov	r12,QWORD[32+rsi]
+	mov	r13,QWORD[40+rsi]
+	mov	r14,QWORD[48+rsi]
+	mov	r15,QWORD[56+rsi]
 
-	movdqa	XMMWORD PTR[rsp],xmm0
-	movdqa	XMMWORD PTR[16+rsp],xmm0
-	movdqa	XMMWORD PTR[32+rsp],xmm0
-	movdqa	XMMWORD PTR[48+rsp],xmm0
-	movdqa	XMMWORD PTR[64+rsp],xmm0
-	movdqa	XMMWORD PTR[80+rsp],xmm0
-	movdqa	XMMWORD PTR[96+rsp],xmm0
+	movdqa	XMMWORD[rsp],xmm0
+	movdqa	XMMWORD[16+rsp],xmm0
+	movdqa	XMMWORD[32+rsp],xmm0
+	movdqa	XMMWORD[48+rsp],xmm0
+	movdqa	XMMWORD[64+rsp],xmm0
+	movdqa	XMMWORD[80+rsp],xmm0
+	movdqa	XMMWORD[96+rsp],xmm0
 	call	__rsaz_512_reduce
-	mov	QWORD PTR[rdi],r8
-	mov	QWORD PTR[8+rdi],r9
-	mov	QWORD PTR[16+rdi],r10
-	mov	QWORD PTR[24+rdi],r11
-	mov	QWORD PTR[32+rdi],r12
-	mov	QWORD PTR[40+rdi],r13
-	mov	QWORD PTR[48+rdi],r14
-	mov	QWORD PTR[56+rdi],r15
+	mov	QWORD[rdi],r8
+	mov	QWORD[8+rdi],r9
+	mov	QWORD[16+rdi],r10
+	mov	QWORD[24+rdi],r11
+	mov	QWORD[32+rdi],r12
+	mov	QWORD[40+rdi],r13
+	mov	QWORD[48+rdi],r14
+	mov	QWORD[56+rdi],r15
 
-	lea	rax,QWORD PTR[((128+24+48))+rsp]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	rbx,QWORD PTR[((-8))+rax]
-	lea	rsp,QWORD PTR[rax]
-$L$mul_by_one_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	lea	rax,[((128+24+48))+rsp]
+	mov	r15,QWORD[((-48))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	rbx,QWORD[((-8))+rax]
+	lea	rsp,[rax]
+$L$mul_by_one_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_rsaz_512_mul_by_one::
-rsaz_512_mul_by_one	ENDP
+$L$SEH_end_rsaz_512_mul_by_one:
 
 ALIGN	32
-__rsaz_512_reduce	PROC PRIVATE
+__rsaz_512_reduce:
 	mov	rbx,r8
-	imul	rbx,QWORD PTR[((128+8))+rsp]
-	mov	rax,QWORD PTR[rbp]
+	imul	rbx,QWORD[((128+8))+rsp]
+	mov	rax,QWORD[rbp]
 	mov	ecx,8
-	jmp	$L$reduction_loop
+	jmp	NEAR $L$reduction_loop
 
 ALIGN	32
-$L$reduction_loop::
+$L$reduction_loop:
 	mul	rbx
-	mov	rax,QWORD PTR[8+rbp]
+	mov	rax,QWORD[8+rbp]
 	neg	r8
 	mov	r8,rdx
 	adc	r8,0
 
 	mul	rbx
 	add	r9,rax
-	mov	rax,QWORD PTR[16+rbp]
+	mov	rax,QWORD[16+rbp]
 	adc	rdx,0
 	add	r8,r9
 	mov	r9,rdx
@@ -892,7 +891,7 @@
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[24+rbp]
+	mov	rax,QWORD[24+rbp]
 	adc	rdx,0
 	add	r9,r10
 	mov	r10,rdx
@@ -900,10 +899,10 @@
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[32+rbp]
+	mov	rax,QWORD[32+rbp]
 	adc	rdx,0
 	add	r10,r11
-	mov	rsi,QWORD PTR[((128+8))+rsp]
+	mov	rsi,QWORD[((128+8))+rsp]
 
 
 	adc	rdx,0
@@ -911,7 +910,7 @@
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[40+rbp]
+	mov	rax,QWORD[40+rbp]
 	adc	rdx,0
 	imul	rsi,r8
 	add	r11,r12
@@ -920,7 +919,7 @@
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[48+rbp]
+	mov	rax,QWORD[48+rbp]
 	adc	rdx,0
 	add	r12,r13
 	mov	r13,rdx
@@ -928,7 +927,7 @@
 
 	mul	rbx
 	add	r14,rax
-	mov	rax,QWORD PTR[56+rbp]
+	mov	rax,QWORD[56+rbp]
 	adc	rdx,0
 	add	r13,r14
 	mov	r14,rdx
@@ -937,146 +936,146 @@
 	mul	rbx
 	mov	rbx,rsi
 	add	r15,rax
-	mov	rax,QWORD PTR[rbp]
+	mov	rax,QWORD[rbp]
 	adc	rdx,0
 	add	r14,r15
 	mov	r15,rdx
 	adc	r15,0
 
 	dec	ecx
-	jne	$L$reduction_loop
+	jne	NEAR $L$reduction_loop
 
 	DB	0F3h,0C3h		;repret
-__rsaz_512_reduce	ENDP
+
 
 ALIGN	32
-__rsaz_512_subtract	PROC PRIVATE
-	mov	QWORD PTR[rdi],r8
-	mov	QWORD PTR[8+rdi],r9
-	mov	QWORD PTR[16+rdi],r10
-	mov	QWORD PTR[24+rdi],r11
-	mov	QWORD PTR[32+rdi],r12
-	mov	QWORD PTR[40+rdi],r13
-	mov	QWORD PTR[48+rdi],r14
-	mov	QWORD PTR[56+rdi],r15
+__rsaz_512_subtract:
+	mov	QWORD[rdi],r8
+	mov	QWORD[8+rdi],r9
+	mov	QWORD[16+rdi],r10
+	mov	QWORD[24+rdi],r11
+	mov	QWORD[32+rdi],r12
+	mov	QWORD[40+rdi],r13
+	mov	QWORD[48+rdi],r14
+	mov	QWORD[56+rdi],r15
 
-	mov	r8,QWORD PTR[rbp]
-	mov	r9,QWORD PTR[8+rbp]
+	mov	r8,QWORD[rbp]
+	mov	r9,QWORD[8+rbp]
 	neg	r8
 	not	r9
 	and	r8,rcx
-	mov	r10,QWORD PTR[16+rbp]
+	mov	r10,QWORD[16+rbp]
 	and	r9,rcx
 	not	r10
-	mov	r11,QWORD PTR[24+rbp]
+	mov	r11,QWORD[24+rbp]
 	and	r10,rcx
 	not	r11
-	mov	r12,QWORD PTR[32+rbp]
+	mov	r12,QWORD[32+rbp]
 	and	r11,rcx
 	not	r12
-	mov	r13,QWORD PTR[40+rbp]
+	mov	r13,QWORD[40+rbp]
 	and	r12,rcx
 	not	r13
-	mov	r14,QWORD PTR[48+rbp]
+	mov	r14,QWORD[48+rbp]
 	and	r13,rcx
 	not	r14
-	mov	r15,QWORD PTR[56+rbp]
+	mov	r15,QWORD[56+rbp]
 	and	r14,rcx
 	not	r15
 	and	r15,rcx
 
-	add	r8,QWORD PTR[rdi]
-	adc	r9,QWORD PTR[8+rdi]
-	adc	r10,QWORD PTR[16+rdi]
-	adc	r11,QWORD PTR[24+rdi]
-	adc	r12,QWORD PTR[32+rdi]
-	adc	r13,QWORD PTR[40+rdi]
-	adc	r14,QWORD PTR[48+rdi]
-	adc	r15,QWORD PTR[56+rdi]
+	add	r8,QWORD[rdi]
+	adc	r9,QWORD[8+rdi]
+	adc	r10,QWORD[16+rdi]
+	adc	r11,QWORD[24+rdi]
+	adc	r12,QWORD[32+rdi]
+	adc	r13,QWORD[40+rdi]
+	adc	r14,QWORD[48+rdi]
+	adc	r15,QWORD[56+rdi]
 
-	mov	QWORD PTR[rdi],r8
-	mov	QWORD PTR[8+rdi],r9
-	mov	QWORD PTR[16+rdi],r10
-	mov	QWORD PTR[24+rdi],r11
-	mov	QWORD PTR[32+rdi],r12
-	mov	QWORD PTR[40+rdi],r13
-	mov	QWORD PTR[48+rdi],r14
-	mov	QWORD PTR[56+rdi],r15
+	mov	QWORD[rdi],r8
+	mov	QWORD[8+rdi],r9
+	mov	QWORD[16+rdi],r10
+	mov	QWORD[24+rdi],r11
+	mov	QWORD[32+rdi],r12
+	mov	QWORD[40+rdi],r13
+	mov	QWORD[48+rdi],r14
+	mov	QWORD[56+rdi],r15
 
 	DB	0F3h,0C3h		;repret
-__rsaz_512_subtract	ENDP
+
 
 ALIGN	32
-__rsaz_512_mul	PROC PRIVATE
-	lea	rdi,QWORD PTR[8+rsp]
+__rsaz_512_mul:
+	lea	rdi,[8+rsp]
 
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	mul	rbx
-	mov	QWORD PTR[rdi],rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	QWORD[rdi],rax
+	mov	rax,QWORD[8+rsi]
 	mov	r8,rdx
 
 	mul	rbx
 	add	r8,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	mov	r9,rdx
 	adc	r9,0
 
 	mul	rbx
 	add	r9,rax
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	mov	r10,rdx
 	adc	r10,0
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	mov	r11,rdx
 	adc	r11,0
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	mov	r12,rdx
 	adc	r12,0
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	mov	r13,rdx
 	adc	r13,0
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	mov	r14,rdx
 	adc	r14,0
 
 	mul	rbx
 	add	r14,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	mov	r15,rdx
 	adc	r15,0
 
-	lea	rbp,QWORD PTR[8+rbp]
-	lea	rdi,QWORD PTR[8+rdi]
+	lea	rbp,[8+rbp]
+	lea	rdi,[8+rdi]
 
 	mov	ecx,7
-	jmp	$L$oop_mul
+	jmp	NEAR $L$oop_mul
 
 ALIGN	32
-$L$oop_mul::
-	mov	rbx,QWORD PTR[rbp]
+$L$oop_mul:
+	mov	rbx,QWORD[rbp]
 	mul	rbx
 	add	r8,rax
-	mov	rax,QWORD PTR[8+rsi]
-	mov	QWORD PTR[rdi],r8
+	mov	rax,QWORD[8+rsi]
+	mov	QWORD[rdi],r8
 	mov	r8,rdx
 	adc	r8,0
 
 	mul	rbx
 	add	r9,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	adc	rdx,0
 	add	r8,r9
 	mov	r9,rdx
@@ -1084,7 +1083,7 @@
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[24+rsi]
+	mov	rax,QWORD[24+rsi]
 	adc	rdx,0
 	add	r9,r10
 	mov	r10,rdx
@@ -1092,7 +1091,7 @@
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[32+rsi]
+	mov	rax,QWORD[32+rsi]
 	adc	rdx,0
 	add	r10,r11
 	mov	r11,rdx
@@ -1100,7 +1099,7 @@
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[40+rsi]
+	mov	rax,QWORD[40+rsi]
 	adc	rdx,0
 	add	r11,r12
 	mov	r12,rdx
@@ -1108,7 +1107,7 @@
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[48+rsi]
+	mov	rax,QWORD[48+rsi]
 	adc	rdx,0
 	add	r12,r13
 	mov	r13,rdx
@@ -1116,81 +1115,81 @@
 
 	mul	rbx
 	add	r14,rax
-	mov	rax,QWORD PTR[56+rsi]
+	mov	rax,QWORD[56+rsi]
 	adc	rdx,0
 	add	r13,r14
 	mov	r14,rdx
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	adc	r14,0
 
 	mul	rbx
 	add	r15,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	r14,r15
 	mov	r15,rdx
 	adc	r15,0
 
-	lea	rdi,QWORD PTR[8+rdi]
+	lea	rdi,[8+rdi]
 
 	dec	ecx
-	jnz	$L$oop_mul
+	jnz	NEAR $L$oop_mul
 
-	mov	QWORD PTR[rdi],r8
-	mov	QWORD PTR[8+rdi],r9
-	mov	QWORD PTR[16+rdi],r10
-	mov	QWORD PTR[24+rdi],r11
-	mov	QWORD PTR[32+rdi],r12
-	mov	QWORD PTR[40+rdi],r13
-	mov	QWORD PTR[48+rdi],r14
-	mov	QWORD PTR[56+rdi],r15
+	mov	QWORD[rdi],r8
+	mov	QWORD[8+rdi],r9
+	mov	QWORD[16+rdi],r10
+	mov	QWORD[24+rdi],r11
+	mov	QWORD[32+rdi],r12
+	mov	QWORD[40+rdi],r13
+	mov	QWORD[48+rdi],r14
+	mov	QWORD[56+rdi],r15
 
 	DB	0F3h,0C3h		;repret
-__rsaz_512_mul	ENDP
-PUBLIC	rsaz_512_scatter4
+
+global	rsaz_512_scatter4
 
 ALIGN	16
-rsaz_512_scatter4	PROC PUBLIC
-	lea	rcx,QWORD PTR[r8*4+rcx]
+rsaz_512_scatter4:
+	lea	rcx,[r8*4+rcx]
 	mov	r9d,8
-	jmp	$L$oop_scatter
+	jmp	NEAR $L$oop_scatter
 ALIGN	16
-$L$oop_scatter::
-	mov	rax,QWORD PTR[rdx]
-	lea	rdx,QWORD PTR[8+rdx]
-	mov	DWORD PTR[rcx],eax
+$L$oop_scatter:
+	mov	rax,QWORD[rdx]
+	lea	rdx,[8+rdx]
+	mov	DWORD[rcx],eax
 	shr	rax,32
-	mov	DWORD PTR[64+rcx],eax
-	lea	rcx,QWORD PTR[128+rcx]
+	mov	DWORD[64+rcx],eax
+	lea	rcx,[128+rcx]
 	dec	r9d
-	jnz	$L$oop_scatter
+	jnz	NEAR $L$oop_scatter
 	DB	0F3h,0C3h		;repret
-rsaz_512_scatter4	ENDP
 
-PUBLIC	rsaz_512_gather4
+
+global	rsaz_512_gather4
 
 ALIGN	16
-rsaz_512_gather4	PROC PUBLIC
-	lea	rdx,QWORD PTR[r8*4+rdx]
+rsaz_512_gather4:
+	lea	rdx,[r8*4+rdx]
 	mov	r9d,8
-	jmp	$L$oop_gather
+	jmp	NEAR $L$oop_gather
 ALIGN	16
-$L$oop_gather::
-	mov	eax,DWORD PTR[rdx]
-	mov	r8d,DWORD PTR[64+rdx]
-	lea	rdx,QWORD PTR[128+rdx]
+$L$oop_gather:
+	mov	eax,DWORD[rdx]
+	mov	r8d,DWORD[64+rdx]
+	lea	rdx,[128+rdx]
 	shl	r8,32
 	or	rax,r8
-	mov	QWORD PTR[rcx],rax
-	lea	rcx,QWORD PTR[8+rcx]
+	mov	QWORD[rcx],rax
+	lea	rcx,[8+rcx]
 	dec	r9d
-	jnz	$L$oop_gather
+	jnz	NEAR $L$oop_gather
 	DB	0F3h,0C3h		;repret
-rsaz_512_gather4	ENDP
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1202,64 +1201,64 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	lea	rax,QWORD PTR[((128+24+48))+rax]
+	lea	rax,[((128+24+48))+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$common_seh_tail::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$common_seh_tail:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -1273,54 +1272,49 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_rsaz_512_sqr
-	DD	imagerel $L$SEH_end_rsaz_512_sqr
-	DD	imagerel $L$SEH_info_rsaz_512_sqr
+	DD	$L$SEH_begin_rsaz_512_sqr wrt ..imagebase
+	DD	$L$SEH_end_rsaz_512_sqr wrt ..imagebase
+	DD	$L$SEH_info_rsaz_512_sqr wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_rsaz_512_mul
-	DD	imagerel $L$SEH_end_rsaz_512_mul
-	DD	imagerel $L$SEH_info_rsaz_512_mul
+	DD	$L$SEH_begin_rsaz_512_mul wrt ..imagebase
+	DD	$L$SEH_end_rsaz_512_mul wrt ..imagebase
+	DD	$L$SEH_info_rsaz_512_mul wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_rsaz_512_mul_gather4
-	DD	imagerel $L$SEH_end_rsaz_512_mul_gather4
-	DD	imagerel $L$SEH_info_rsaz_512_mul_gather4
+	DD	$L$SEH_begin_rsaz_512_mul_gather4 wrt ..imagebase
+	DD	$L$SEH_end_rsaz_512_mul_gather4 wrt ..imagebase
+	DD	$L$SEH_info_rsaz_512_mul_gather4 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_rsaz_512_mul_scatter4
-	DD	imagerel $L$SEH_end_rsaz_512_mul_scatter4
-	DD	imagerel $L$SEH_info_rsaz_512_mul_scatter4
+	DD	$L$SEH_begin_rsaz_512_mul_scatter4 wrt ..imagebase
+	DD	$L$SEH_end_rsaz_512_mul_scatter4 wrt ..imagebase
+	DD	$L$SEH_info_rsaz_512_mul_scatter4 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_rsaz_512_mul_by_one
-	DD	imagerel $L$SEH_end_rsaz_512_mul_by_one
-	DD	imagerel $L$SEH_info_rsaz_512_mul_by_one
+	DD	$L$SEH_begin_rsaz_512_mul_by_one wrt ..imagebase
+	DD	$L$SEH_end_rsaz_512_mul_by_one wrt ..imagebase
+	DD	$L$SEH_info_rsaz_512_mul_by_one wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_rsaz_512_sqr::
+$L$SEH_info_rsaz_512_sqr:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$sqr_body,imagerel $L$sqr_epilogue
-$L$SEH_info_rsaz_512_mul::
+	DD	se_handler wrt ..imagebase
+	DD	$L$sqr_body wrt ..imagebase,$L$sqr_epilogue wrt ..imagebase
+$L$SEH_info_rsaz_512_mul:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$mul_body,imagerel $L$mul_epilogue
-$L$SEH_info_rsaz_512_mul_gather4::
+	DD	se_handler wrt ..imagebase
+	DD	$L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase
+$L$SEH_info_rsaz_512_mul_gather4:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$mul_gather4_body,imagerel $L$mul_gather4_epilogue
-$L$SEH_info_rsaz_512_mul_scatter4::
+	DD	se_handler wrt ..imagebase
+	DD	$L$mul_gather4_body wrt ..imagebase,$L$mul_gather4_epilogue wrt ..imagebase
+$L$SEH_info_rsaz_512_mul_scatter4:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$mul_scatter4_body,imagerel $L$mul_scatter4_epilogue
-$L$SEH_info_rsaz_512_mul_by_one::
+	DD	se_handler wrt ..imagebase
+	DD	$L$mul_scatter4_body wrt ..imagebase,$L$mul_scatter4_epilogue wrt ..imagebase
+$L$SEH_info_rsaz_512_mul_by_one:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$mul_by_one_body,imagerel $L$mul_by_one_epilogue
-
-.xdata	ENDS
-END
+	DD	se_handler wrt ..imagebase
+	DD	$L$mul_by_one_body wrt ..imagebase,$L$mul_by_one_epilogue wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont.asm b/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont.asm
index a409325..db0d1b9 100644
--- a/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont.asm
+++ b/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont.asm
@@ -1,36 +1,40 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-EXTERN	OPENSSL_ia32cap_P:NEAR
 
-PUBLIC	bn_mul_mont
+EXTERN	OPENSSL_ia32cap_P
+
+global	bn_mul_mont
 
 ALIGN	16
-bn_mul_mont	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_mul_mont:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_mul_mont::
+$L$SEH_begin_bn_mul_mont:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	test	r9d,3
-	jnz	$L$mul_enter
+	jnz	NEAR $L$mul_enter
 	cmp	r9d,8
-	jb	$L$mul_enter
+	jb	NEAR $L$mul_enter
 	cmp	rdx,rsi
-	jne	$L$mul4x_enter
+	jne	NEAR $L$mul4x_enter
 	test	r9d,7
-	jz	$L$sqr8x_enter
-	jmp	$L$mul4x_enter
+	jz	NEAR $L$sqr8x_enter
+	jmp	NEAR $L$mul4x_enter
 
 ALIGN	16
-$L$mul_enter::
+$L$mul_enter:
 	push	rbx
 	push	rbp
 	push	r12
@@ -39,18 +43,18 @@
 	push	r15
 
 	mov	r9d,r9d
-	lea	r10,QWORD PTR[2+r9]
+	lea	r10,[2+r9]
 	mov	r11,rsp
 	neg	r10
-	lea	rsp,QWORD PTR[r10*8+rsp]
+	lea	rsp,[r10*8+rsp]
 	and	rsp,-1024
 
-	mov	QWORD PTR[8+r9*8+rsp],r11
-$L$mul_body::
+	mov	QWORD[8+r9*8+rsp],r11
+$L$mul_body:
 	mov	r12,rdx
-	mov	r8,QWORD PTR[r8]
-	mov	rbx,QWORD PTR[r12]
-	mov	rax,QWORD PTR[rsi]
+	mov	r8,QWORD[r8]
+	mov	rbx,QWORD[r12]
+	mov	rax,QWORD[rsi]
 
 	xor	r14,r14
 	xor	r15,r15
@@ -58,69 +62,69 @@
 	mov	rbp,r8
 	mul	rbx
 	mov	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 
 	imul	rbp,r10
 	mov	r11,rdx
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	adc	rdx,0
 	mov	r13,rdx
 
-	lea	r15,QWORD PTR[1+r15]
-	jmp	$L$1st_enter
+	lea	r15,[1+r15]
+	jmp	NEAR $L$1st_enter
 
 ALIGN	16
-$L$1st::
+$L$1st:
 	add	r13,rax
-	mov	rax,QWORD PTR[r15*8+rsi]
+	mov	rax,QWORD[r15*8+rsi]
 	adc	rdx,0
 	add	r13,r11
 	mov	r11,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 
-$L$1st_enter::
+$L$1st_enter:
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[r15*8+rcx]
+	mov	rax,QWORD[r15*8+rcx]
 	adc	rdx,0
-	lea	r15,QWORD PTR[1+r15]
+	lea	r15,[1+r15]
 	mov	r10,rdx
 
 	mul	rbp
 	cmp	r15,r9
-	jne	$L$1st
+	jne	NEAR $L$1st
 
 	add	r13,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	r13,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 	mov	r11,r10
 
 	xor	rdx,rdx
 	add	r13,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r9*8+rsp],r13
-	mov	QWORD PTR[r9*8+rsp],rdx
+	mov	QWORD[((-8))+r9*8+rsp],r13
+	mov	QWORD[r9*8+rsp],rdx
 
-	lea	r14,QWORD PTR[1+r14]
-	jmp	$L$outer
+	lea	r14,[1+r14]
+	jmp	NEAR $L$outer
 ALIGN	16
-$L$outer::
-	mov	rbx,QWORD PTR[r14*8+r12]
+$L$outer:
+	mov	rbx,QWORD[r14*8+r12]
 	xor	r15,r15
 	mov	rbp,r8
-	mov	r10,QWORD PTR[rsp]
+	mov	r10,QWORD[rsp]
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	adc	rdx,0
 
 	imul	rbp,r10
@@ -128,46 +132,46 @@
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	adc	rdx,0
-	mov	r10,QWORD PTR[8+rsp]
+	mov	r10,QWORD[8+rsp]
 	mov	r13,rdx
 
-	lea	r15,QWORD PTR[1+r15]
-	jmp	$L$inner_enter
+	lea	r15,[1+r15]
+	jmp	NEAR $L$inner_enter
 
 ALIGN	16
-$L$inner::
+$L$inner:
 	add	r13,rax
-	mov	rax,QWORD PTR[r15*8+rsi]
+	mov	rax,QWORD[r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
-	mov	r10,QWORD PTR[r15*8+rsp]
+	mov	r10,QWORD[r15*8+rsp]
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 
-$L$inner_enter::
+$L$inner_enter:
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[r15*8+rcx]
+	mov	rax,QWORD[r15*8+rcx]
 	adc	rdx,0
 	add	r10,r11
 	mov	r11,rdx
 	adc	r11,0
-	lea	r15,QWORD PTR[1+r15]
+	lea	r15,[1+r15]
 
 	mul	rbp
 	cmp	r15,r9
-	jne	$L$inner
+	jne	NEAR $L$inner
 
 	add	r13,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	r13,r10
-	mov	r10,QWORD PTR[r15*8+rsp]
+	mov	r10,QWORD[r15*8+rsp]
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 
 	xor	rdx,rdx
@@ -175,73 +179,72 @@
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r9*8+rsp],r13
-	mov	QWORD PTR[r9*8+rsp],rdx
+	mov	QWORD[((-8))+r9*8+rsp],r13
+	mov	QWORD[r9*8+rsp],rdx
 
-	lea	r14,QWORD PTR[1+r14]
+	lea	r14,[1+r14]
 	cmp	r14,r9
-	jb	$L$outer
+	jb	NEAR $L$outer
 
 	xor	r14,r14
-	mov	rax,QWORD PTR[rsp]
-	lea	rsi,QWORD PTR[rsp]
+	mov	rax,QWORD[rsp]
+	lea	rsi,[rsp]
 	mov	r15,r9
-	jmp	$L$sub
+	jmp	NEAR $L$sub
 ALIGN	16
-$L$sub::	sbb	rax,QWORD PTR[r14*8+rcx]
-	mov	QWORD PTR[r14*8+rdi],rax
-	mov	rax,QWORD PTR[8+r14*8+rsi]
-	lea	r14,QWORD PTR[1+r14]
+$L$sub:	sbb	rax,QWORD[r14*8+rcx]
+	mov	QWORD[r14*8+rdi],rax
+	mov	rax,QWORD[8+r14*8+rsi]
+	lea	r14,[1+r14]
 	dec	r15
-	jnz	$L$sub
+	jnz	NEAR $L$sub
 
 	sbb	rax,0
 	xor	r14,r14
 	mov	r15,r9
 ALIGN	16
-$L$copy::
-	mov	rsi,QWORD PTR[r14*8+rsp]
-	mov	rcx,QWORD PTR[r14*8+rdi]
+$L$copy:
+	mov	rsi,QWORD[r14*8+rsp]
+	mov	rcx,QWORD[r14*8+rdi]
 	xor	rsi,rcx
 	and	rsi,rax
 	xor	rsi,rcx
-	mov	QWORD PTR[r14*8+rsp],r14
-	mov	QWORD PTR[r14*8+rdi],rsi
-	lea	r14,QWORD PTR[1+r14]
+	mov	QWORD[r14*8+rsp],r14
+	mov	QWORD[r14*8+rdi],rsi
+	lea	r14,[1+r14]
 	sub	r15,1
-	jnz	$L$copy
+	jnz	NEAR $L$copy
 
-	mov	rsi,QWORD PTR[8+r9*8+rsp]
+	mov	rsi,QWORD[8+r9*8+rsp]
 	mov	rax,1
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$mul_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$mul_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_mul_mont::
-bn_mul_mont	ENDP
+$L$SEH_end_bn_mul_mont:
 
 ALIGN	16
-bn_mul4x_mont	PROC PRIVATE
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_mul4x_mont:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_mul4x_mont::
+$L$SEH_begin_bn_mul4x_mont:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-$L$mul4x_enter::
+$L$mul4x_enter:
 	push	rbx
 	push	rbp
 	push	r12
@@ -250,19 +253,19 @@
 	push	r15
 
 	mov	r9d,r9d
-	lea	r10,QWORD PTR[4+r9]
+	lea	r10,[4+r9]
 	mov	r11,rsp
 	neg	r10
-	lea	rsp,QWORD PTR[r10*8+rsp]
+	lea	rsp,[r10*8+rsp]
 	and	rsp,-1024
 
-	mov	QWORD PTR[8+r9*8+rsp],r11
-$L$mul4x_body::
-	mov	QWORD PTR[16+r9*8+rsp],rdi
+	mov	QWORD[8+r9*8+rsp],r11
+$L$mul4x_body:
+	mov	QWORD[16+r9*8+rsp],rdi
 	mov	r12,rdx
-	mov	r8,QWORD PTR[r8]
-	mov	rbx,QWORD PTR[r12]
-	mov	rax,QWORD PTR[rsi]
+	mov	r8,QWORD[r8]
+	mov	rbx,QWORD[r12]
+	mov	rax,QWORD[rsi]
 
 	xor	r14,r14
 	xor	r15,r15
@@ -270,144 +273,144 @@
 	mov	rbp,r8
 	mul	rbx
 	mov	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 
 	imul	rbp,r10
 	mov	r11,rdx
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	adc	rdx,0
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[8+rcx]
+	mov	rax,QWORD[8+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	adc	rdx,0
 	add	rdi,r11
-	lea	r15,QWORD PTR[4+r15]
+	lea	r15,[4+r15]
 	adc	rdx,0
-	mov	QWORD PTR[rsp],rdi
+	mov	QWORD[rsp],rdi
 	mov	r13,rdx
-	jmp	$L$1st4x
+	jmp	NEAR $L$1st4x
 ALIGN	16
-$L$1st4x::
+$L$1st4x:
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-16))+r15*8+rcx]
+	mov	rax,QWORD[((-16))+r15*8+rcx]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rsi]
+	mov	rax,QWORD[((-8))+r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r15*8+rsp],r13
+	mov	QWORD[((-24))+r15*8+rsp],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rcx]
+	mov	rax,QWORD[((-8))+r15*8+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[r15*8+rsi]
+	mov	rax,QWORD[r15*8+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],rdi
+	mov	QWORD[((-16))+r15*8+rsp],rdi
 	mov	r13,rdx
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[r15*8+rcx]
+	mov	rax,QWORD[r15*8+rcx]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[8+r15*8+rsi]
+	mov	rax,QWORD[8+r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r15*8+rsp],r13
+	mov	QWORD[((-8))+r15*8+rsp],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[8+r15*8+rcx]
+	mov	rax,QWORD[8+r15*8+rcx]
 	adc	rdx,0
-	lea	r15,QWORD PTR[4+r15]
+	lea	r15,[4+r15]
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[((-16))+r15*8+rsi]
+	mov	rax,QWORD[((-16))+r15*8+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-32))+r15*8+rsp],rdi
+	mov	QWORD[((-32))+r15*8+rsp],rdi
 	mov	r13,rdx
 	cmp	r15,r9
-	jb	$L$1st4x
+	jb	NEAR $L$1st4x
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-16))+r15*8+rcx]
+	mov	rax,QWORD[((-16))+r15*8+rcx]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rsi]
+	mov	rax,QWORD[((-8))+r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r15*8+rsp],r13
+	mov	QWORD[((-24))+r15*8+rsp],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rcx]
+	mov	rax,QWORD[((-8))+r15*8+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],rdi
+	mov	QWORD[((-16))+r15*8+rsp],rdi
 	mov	r13,rdx
 
 	xor	rdi,rdi
 	add	r13,r10
 	adc	rdi,0
-	mov	QWORD PTR[((-8))+r15*8+rsp],r13
-	mov	QWORD PTR[r15*8+rsp],rdi
+	mov	QWORD[((-8))+r15*8+rsp],r13
+	mov	QWORD[r15*8+rsp],rdi
 
-	lea	r14,QWORD PTR[1+r14]
+	lea	r14,[1+r14]
 ALIGN	4
-$L$outer4x::
-	mov	rbx,QWORD PTR[r14*8+r12]
+$L$outer4x:
+	mov	rbx,QWORD[r14*8+r12]
 	xor	r15,r15
-	mov	r10,QWORD PTR[rsp]
+	mov	r10,QWORD[rsp]
 	mov	rbp,r8
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	adc	rdx,0
 
 	imul	rbp,r10
@@ -415,248 +418,247 @@
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	adc	rdx,0
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[8+rcx]
+	mov	rax,QWORD[8+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[8+rsp]
+	add	r11,QWORD[8+rsp]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[16+rsi]
+	mov	rax,QWORD[16+rsi]
 	adc	rdx,0
 	add	rdi,r11
-	lea	r15,QWORD PTR[4+r15]
+	lea	r15,[4+r15]
 	adc	rdx,0
-	mov	QWORD PTR[rsp],rdi
+	mov	QWORD[rsp],rdi
 	mov	r13,rdx
-	jmp	$L$inner4x
+	jmp	NEAR $L$inner4x
 ALIGN	16
-$L$inner4x::
+$L$inner4x:
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-16))+r15*8+rcx]
+	mov	rax,QWORD[((-16))+r15*8+rcx]
 	adc	rdx,0
-	add	r10,QWORD PTR[((-16))+r15*8+rsp]
+	add	r10,QWORD[((-16))+r15*8+rsp]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rsi]
+	mov	rax,QWORD[((-8))+r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r15*8+rsp],r13
+	mov	QWORD[((-24))+r15*8+rsp],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rcx]
+	mov	rax,QWORD[((-8))+r15*8+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[((-8))+r15*8+rsp]
+	add	r11,QWORD[((-8))+r15*8+rsp]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[r15*8+rsi]
+	mov	rax,QWORD[r15*8+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],rdi
+	mov	QWORD[((-16))+r15*8+rsp],rdi
 	mov	r13,rdx
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[r15*8+rcx]
+	mov	rax,QWORD[r15*8+rcx]
 	adc	rdx,0
-	add	r10,QWORD PTR[r15*8+rsp]
+	add	r10,QWORD[r15*8+rsp]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[8+r15*8+rsi]
+	mov	rax,QWORD[8+r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r15*8+rsp],r13
+	mov	QWORD[((-8))+r15*8+rsp],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[8+r15*8+rcx]
+	mov	rax,QWORD[8+r15*8+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[8+r15*8+rsp]
+	add	r11,QWORD[8+r15*8+rsp]
 	adc	rdx,0
-	lea	r15,QWORD PTR[4+r15]
+	lea	r15,[4+r15]
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[((-16))+r15*8+rsi]
+	mov	rax,QWORD[((-16))+r15*8+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-32))+r15*8+rsp],rdi
+	mov	QWORD[((-32))+r15*8+rsp],rdi
 	mov	r13,rdx
 	cmp	r15,r9
-	jb	$L$inner4x
+	jb	NEAR $L$inner4x
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-16))+r15*8+rcx]
+	mov	rax,QWORD[((-16))+r15*8+rcx]
 	adc	rdx,0
-	add	r10,QWORD PTR[((-16))+r15*8+rsp]
+	add	r10,QWORD[((-16))+r15*8+rsp]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rsi]
+	mov	rax,QWORD[((-8))+r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r15*8+rsp],r13
+	mov	QWORD[((-24))+r15*8+rsp],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-8))+r15*8+rcx]
+	mov	rax,QWORD[((-8))+r15*8+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[((-8))+r15*8+rsp]
+	add	r11,QWORD[((-8))+r15*8+rsp]
 	adc	rdx,0
-	lea	r14,QWORD PTR[1+r14]
+	lea	r14,[1+r14]
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],rdi
+	mov	QWORD[((-16))+r15*8+rsp],rdi
 	mov	r13,rdx
 
 	xor	rdi,rdi
 	add	r13,r10
 	adc	rdi,0
-	add	r13,QWORD PTR[r9*8+rsp]
+	add	r13,QWORD[r9*8+rsp]
 	adc	rdi,0
-	mov	QWORD PTR[((-8))+r15*8+rsp],r13
-	mov	QWORD PTR[r15*8+rsp],rdi
+	mov	QWORD[((-8))+r15*8+rsp],r13
+	mov	QWORD[r15*8+rsp],rdi
 
 	cmp	r14,r9
-	jb	$L$outer4x
-	mov	rdi,QWORD PTR[16+r9*8+rsp]
-	mov	rax,QWORD PTR[rsp]
-	mov	rdx,QWORD PTR[8+rsp]
+	jb	NEAR $L$outer4x
+	mov	rdi,QWORD[16+r9*8+rsp]
+	mov	rax,QWORD[rsp]
+	mov	rdx,QWORD[8+rsp]
 	shr	r9,2
-	lea	rsi,QWORD PTR[rsp]
+	lea	rsi,[rsp]
 	xor	r14,r14
 
-	sub	rax,QWORD PTR[rcx]
-	mov	rbx,QWORD PTR[16+rsi]
-	mov	rbp,QWORD PTR[24+rsi]
-	sbb	rdx,QWORD PTR[8+rcx]
-	lea	r15,QWORD PTR[((-1))+r9]
-	jmp	$L$sub4x
+	sub	rax,QWORD[rcx]
+	mov	rbx,QWORD[16+rsi]
+	mov	rbp,QWORD[24+rsi]
+	sbb	rdx,QWORD[8+rcx]
+	lea	r15,[((-1))+r9]
+	jmp	NEAR $L$sub4x
 ALIGN	16
-$L$sub4x::
-	mov	QWORD PTR[r14*8+rdi],rax
-	mov	QWORD PTR[8+r14*8+rdi],rdx
-	sbb	rbx,QWORD PTR[16+r14*8+rcx]
-	mov	rax,QWORD PTR[32+r14*8+rsi]
-	mov	rdx,QWORD PTR[40+r14*8+rsi]
-	sbb	rbp,QWORD PTR[24+r14*8+rcx]
-	mov	QWORD PTR[16+r14*8+rdi],rbx
-	mov	QWORD PTR[24+r14*8+rdi],rbp
-	sbb	rax,QWORD PTR[32+r14*8+rcx]
-	mov	rbx,QWORD PTR[48+r14*8+rsi]
-	mov	rbp,QWORD PTR[56+r14*8+rsi]
-	sbb	rdx,QWORD PTR[40+r14*8+rcx]
-	lea	r14,QWORD PTR[4+r14]
+$L$sub4x:
+	mov	QWORD[r14*8+rdi],rax
+	mov	QWORD[8+r14*8+rdi],rdx
+	sbb	rbx,QWORD[16+r14*8+rcx]
+	mov	rax,QWORD[32+r14*8+rsi]
+	mov	rdx,QWORD[40+r14*8+rsi]
+	sbb	rbp,QWORD[24+r14*8+rcx]
+	mov	QWORD[16+r14*8+rdi],rbx
+	mov	QWORD[24+r14*8+rdi],rbp
+	sbb	rax,QWORD[32+r14*8+rcx]
+	mov	rbx,QWORD[48+r14*8+rsi]
+	mov	rbp,QWORD[56+r14*8+rsi]
+	sbb	rdx,QWORD[40+r14*8+rcx]
+	lea	r14,[4+r14]
 	dec	r15
-	jnz	$L$sub4x
+	jnz	NEAR $L$sub4x
 
-	mov	QWORD PTR[r14*8+rdi],rax
-	mov	rax,QWORD PTR[32+r14*8+rsi]
-	sbb	rbx,QWORD PTR[16+r14*8+rcx]
-	mov	QWORD PTR[8+r14*8+rdi],rdx
-	sbb	rbp,QWORD PTR[24+r14*8+rcx]
-	mov	QWORD PTR[16+r14*8+rdi],rbx
+	mov	QWORD[r14*8+rdi],rax
+	mov	rax,QWORD[32+r14*8+rsi]
+	sbb	rbx,QWORD[16+r14*8+rcx]
+	mov	QWORD[8+r14*8+rdi],rdx
+	sbb	rbp,QWORD[24+r14*8+rcx]
+	mov	QWORD[16+r14*8+rdi],rbx
 
 	sbb	rax,0
 DB 66h, 48h, 0fh, 6eh, 0c0h
 	punpcklqdq	xmm0,xmm0
-	mov	QWORD PTR[24+r14*8+rdi],rbp
+	mov	QWORD[24+r14*8+rdi],rbp
 	xor	r14,r14
 
 	mov	r15,r9
 	pxor	xmm5,xmm5
-	jmp	$L$copy4x
+	jmp	NEAR $L$copy4x
 ALIGN	16
-$L$copy4x::
-	movdqu	xmm2,XMMWORD PTR[r14*1+rsp]
-	movdqu	xmm4,XMMWORD PTR[16+r14*1+rsp]
-	movdqu	xmm1,XMMWORD PTR[r14*1+rdi]
-	movdqu	xmm3,XMMWORD PTR[16+r14*1+rdi]
+$L$copy4x:
+	movdqu	xmm2,XMMWORD[r14*1+rsp]
+	movdqu	xmm4,XMMWORD[16+r14*1+rsp]
+	movdqu	xmm1,XMMWORD[r14*1+rdi]
+	movdqu	xmm3,XMMWORD[16+r14*1+rdi]
 	pxor	xmm2,xmm1
 	pxor	xmm4,xmm3
 	pand	xmm2,xmm0
 	pand	xmm4,xmm0
 	pxor	xmm2,xmm1
 	pxor	xmm4,xmm3
-	movdqu	XMMWORD PTR[r14*1+rdi],xmm2
-	movdqu	XMMWORD PTR[16+r14*1+rdi],xmm4
-	movdqa	XMMWORD PTR[r14*1+rsp],xmm5
-	movdqa	XMMWORD PTR[16+r14*1+rsp],xmm5
+	movdqu	XMMWORD[r14*1+rdi],xmm2
+	movdqu	XMMWORD[16+r14*1+rdi],xmm4
+	movdqa	XMMWORD[r14*1+rsp],xmm5
+	movdqa	XMMWORD[16+r14*1+rsp],xmm5
 
-	lea	r14,QWORD PTR[32+r14]
+	lea	r14,[32+r14]
 	dec	r15
-	jnz	$L$copy4x
+	jnz	NEAR $L$copy4x
 
 	shl	r9,2
-	mov	rsi,QWORD PTR[8+r9*8+rsp]
+	mov	rsi,QWORD[8+r9*8+rsp]
 	mov	rax,1
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$mul4x_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$mul4x_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_mul4x_mont::
-bn_mul4x_mont	ENDP
-EXTERN	bn_sqr8x_internal:NEAR
+$L$SEH_end_bn_mul4x_mont:
+EXTERN	bn_sqr8x_internal
 
 
 ALIGN	32
-bn_sqr8x_mont	PROC PRIVATE
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_sqr8x_mont:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_sqr8x_mont::
+$L$SEH_begin_bn_sqr8x_mont:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-$L$sqr8x_enter::
+$L$sqr8x_enter:
 	mov	rax,rsp
 	push	rbx
 	push	rbp
@@ -675,54 +677,54 @@
 
 
 
-	lea	r11,QWORD PTR[((-64))+r9*4+rsp]
-	mov	r8,QWORD PTR[r8]
+	lea	r11,[((-64))+r9*4+rsp]
+	mov	r8,QWORD[r8]
 	sub	r11,rsi
 	and	r11,4095
 	cmp	r10,r11
-	jb	$L$sqr8x_sp_alt
+	jb	NEAR $L$sqr8x_sp_alt
 	sub	rsp,r11
-	lea	rsp,QWORD PTR[((-64))+r9*4+rsp]
-	jmp	$L$sqr8x_sp_done
+	lea	rsp,[((-64))+r9*4+rsp]
+	jmp	NEAR $L$sqr8x_sp_done
 
 ALIGN	32
-$L$sqr8x_sp_alt::
-	lea	r10,QWORD PTR[((4096-64))+r9*4]
-	lea	rsp,QWORD PTR[((-64))+r9*4+rsp]
+$L$sqr8x_sp_alt:
+	lea	r10,[((4096-64))+r9*4]
+	lea	rsp,[((-64))+r9*4+rsp]
 	sub	r11,r10
 	mov	r10,0
 	cmovc	r11,r10
 	sub	rsp,r11
-$L$sqr8x_sp_done::
+$L$sqr8x_sp_done:
 	and	rsp,-64
 	mov	r10,r9
 	neg	r9
 
-	lea	r11,QWORD PTR[64+r9*2+rsp]
-	mov	QWORD PTR[32+rsp],r8
-	mov	QWORD PTR[40+rsp],rax
-$L$sqr8x_body::
+	lea	r11,[64+r9*2+rsp]
+	mov	QWORD[32+rsp],r8
+	mov	QWORD[40+rsp],rax
+$L$sqr8x_body:
 
 	mov	rbp,r9
 DB	102,73,15,110,211
 	shr	rbp,3+2
-	mov	eax,DWORD PTR[((OPENSSL_ia32cap_P+8))]
-	jmp	$L$sqr8x_copy_n
+	mov	eax,DWORD[((OPENSSL_ia32cap_P+8))]
+	jmp	NEAR $L$sqr8x_copy_n
 
 ALIGN	32
-$L$sqr8x_copy_n::
-	movq	xmm0,QWORD PTR[rcx]
-	movq	xmm1,QWORD PTR[8+rcx]
-	movq	xmm3,QWORD PTR[16+rcx]
-	movq	xmm4,QWORD PTR[24+rcx]
-	lea	rcx,QWORD PTR[32+rcx]
-	movdqa	XMMWORD PTR[r11],xmm0
-	movdqa	XMMWORD PTR[16+r11],xmm1
-	movdqa	XMMWORD PTR[32+r11],xmm3
-	movdqa	XMMWORD PTR[48+r11],xmm4
-	lea	r11,QWORD PTR[64+r11]
+$L$sqr8x_copy_n:
+	movq	xmm0,QWORD[rcx]
+	movq	xmm1,QWORD[8+rcx]
+	movq	xmm3,QWORD[16+rcx]
+	movq	xmm4,QWORD[24+rcx]
+	lea	rcx,[32+rcx]
+	movdqa	XMMWORD[r11],xmm0
+	movdqa	XMMWORD[16+r11],xmm1
+	movdqa	XMMWORD[32+r11],xmm3
+	movdqa	XMMWORD[48+r11],xmm4
+	lea	r11,[64+r11]
 	dec	rbp
-	jnz	$L$sqr8x_copy_n
+	jnz	NEAR $L$sqr8x_copy_n
 
 	pxor	xmm0,xmm0
 DB	102,72,15,110,207
@@ -730,51 +732,50 @@
 	call	bn_sqr8x_internal
 
 	pxor	xmm0,xmm0
-	lea	rax,QWORD PTR[48+rsp]
-	lea	rdx,QWORD PTR[64+r9*2+rsp]
+	lea	rax,[48+rsp]
+	lea	rdx,[64+r9*2+rsp]
 	shr	r9,3+2
-	mov	rsi,QWORD PTR[40+rsp]
-	jmp	$L$sqr8x_zero
+	mov	rsi,QWORD[40+rsp]
+	jmp	NEAR $L$sqr8x_zero
 
 ALIGN	32
-$L$sqr8x_zero::
-	movdqa	XMMWORD PTR[rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm0
-	movdqa	XMMWORD PTR[32+rax],xmm0
-	movdqa	XMMWORD PTR[48+rax],xmm0
-	lea	rax,QWORD PTR[64+rax]
-	movdqa	XMMWORD PTR[rdx],xmm0
-	movdqa	XMMWORD PTR[16+rdx],xmm0
-	movdqa	XMMWORD PTR[32+rdx],xmm0
-	movdqa	XMMWORD PTR[48+rdx],xmm0
-	lea	rdx,QWORD PTR[64+rdx]
+$L$sqr8x_zero:
+	movdqa	XMMWORD[rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm0
+	movdqa	XMMWORD[32+rax],xmm0
+	movdqa	XMMWORD[48+rax],xmm0
+	lea	rax,[64+rax]
+	movdqa	XMMWORD[rdx],xmm0
+	movdqa	XMMWORD[16+rdx],xmm0
+	movdqa	XMMWORD[32+rdx],xmm0
+	movdqa	XMMWORD[48+rdx],xmm0
+	lea	rdx,[64+rdx]
 	dec	r9
-	jnz	$L$sqr8x_zero
+	jnz	NEAR $L$sqr8x_zero
 
 	mov	rax,1
-	mov	r15,QWORD PTR[((-48))+rsi]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$sqr8x_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[((-48))+rsi]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$sqr8x_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_sqr8x_mont::
-bn_sqr8x_mont	ENDP
+$L$SEH_end_bn_sqr8x_mont:
 DB	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
 DB	112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
 DB	54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83
 DB	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
 DB	115,108,46,111,114,103,62,0
 ALIGN	16
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-mul_handler	PROC PRIVATE
+mul_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -786,47 +787,47 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	mov	r10,QWORD PTR[192+r8]
-	mov	rax,QWORD PTR[8+r10*8+rax]
-	lea	rax,QWORD PTR[48+rax]
+	mov	r10,QWORD[192+r8]
+	mov	rax,QWORD[8+r10*8+rax]
+	lea	rax,[48+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-	jmp	$L$common_seh_tail
-mul_handler	ENDP
+	jmp	NEAR $L$common_seh_tail
+
 
 
 ALIGN	16
-sqr_handler	PROC PRIVATE
+sqr_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -838,64 +839,64 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[40+rax]
+	mov	rax,QWORD[40+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$common_seh_tail::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$common_seh_tail:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -909,37 +910,32 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-sqr_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_bn_mul_mont
-	DD	imagerel $L$SEH_end_bn_mul_mont
-	DD	imagerel $L$SEH_info_bn_mul_mont
+	DD	$L$SEH_begin_bn_mul_mont wrt ..imagebase
+	DD	$L$SEH_end_bn_mul_mont wrt ..imagebase
+	DD	$L$SEH_info_bn_mul_mont wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_bn_mul4x_mont
-	DD	imagerel $L$SEH_end_bn_mul4x_mont
-	DD	imagerel $L$SEH_info_bn_mul4x_mont
+	DD	$L$SEH_begin_bn_mul4x_mont wrt ..imagebase
+	DD	$L$SEH_end_bn_mul4x_mont wrt ..imagebase
+	DD	$L$SEH_info_bn_mul4x_mont wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_bn_sqr8x_mont
-	DD	imagerel $L$SEH_end_bn_sqr8x_mont
-	DD	imagerel $L$SEH_info_bn_sqr8x_mont
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+	DD	$L$SEH_begin_bn_sqr8x_mont wrt ..imagebase
+	DD	$L$SEH_end_bn_sqr8x_mont wrt ..imagebase
+	DD	$L$SEH_info_bn_sqr8x_mont wrt ..imagebase
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_bn_mul_mont::
+$L$SEH_info_bn_mul_mont:
 DB	9,0,0,0
-	DD	imagerel mul_handler
-	DD	imagerel $L$mul_body,imagerel $L$mul_epilogue
-$L$SEH_info_bn_mul4x_mont::
+	DD	mul_handler wrt ..imagebase
+	DD	$L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase
+$L$SEH_info_bn_mul4x_mont:
 DB	9,0,0,0
-	DD	imagerel mul_handler
-	DD	imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue
-$L$SEH_info_bn_sqr8x_mont::
+	DD	mul_handler wrt ..imagebase
+	DD	$L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase
+$L$SEH_info_bn_sqr8x_mont:
 DB	9,0,0,0
-	DD	imagerel sqr_handler
-	DD	imagerel $L$sqr8x_body,imagerel $L$sqr8x_epilogue
-
-.xdata	ENDS
-END
+	DD	sqr_handler wrt ..imagebase
+	DD	$L$sqr8x_body wrt ..imagebase,$L$sqr8x_epilogue wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont5.asm b/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont5.asm
index 90c6100..284318a 100644
--- a/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont5.asm
+++ b/third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont5.asm
@@ -1,95 +1,99 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-EXTERN	OPENSSL_ia32cap_P:NEAR
 
-PUBLIC	bn_mul_mont_gather5
+EXTERN	OPENSSL_ia32cap_P
+
+global	bn_mul_mont_gather5
 
 ALIGN	64
-bn_mul_mont_gather5	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_mul_mont_gather5:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_mul_mont_gather5::
+$L$SEH_begin_bn_mul_mont_gather5:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	test	r9d,7
-	jnz	$L$mul_enter
-	jmp	$L$mul4x_enter
+	jnz	NEAR $L$mul_enter
+	jmp	NEAR $L$mul4x_enter
 
 ALIGN	16
-$L$mul_enter::
+$L$mul_enter:
 	mov	r9d,r9d
 	mov	rax,rsp
-	mov	r10d,DWORD PTR[56+rsp]
+	mov	r10d,DWORD[56+rsp]
 	push	rbx
 	push	rbp
 	push	r12
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-40))+rsp]
-	movaps	XMMWORD PTR[rsp],xmm6
-	movaps	XMMWORD PTR[16+rsp],xmm7
-	lea	r11,QWORD PTR[2+r9]
+	lea	rsp,[((-40))+rsp]
+	movaps	XMMWORD[rsp],xmm6
+	movaps	XMMWORD[16+rsp],xmm7
+	lea	r11,[2+r9]
 	neg	r11
-	lea	rsp,QWORD PTR[r11*8+rsp]
+	lea	rsp,[r11*8+rsp]
 	and	rsp,-1024
 
-	mov	QWORD PTR[8+r9*8+rsp],rax
-$L$mul_body::
+	mov	QWORD[8+r9*8+rsp],rax
+$L$mul_body:
 	mov	r12,rdx
 	mov	r11,r10
 	shr	r10,3
 	and	r11,7
 	not	r10
-	lea	rax,QWORD PTR[$L$magic_masks]
+	lea	rax,[$L$magic_masks]
 	and	r10,3
-	lea	r12,QWORD PTR[96+r11*8+r12]
-	movq	xmm4,QWORD PTR[r10*8+rax]
-	movq	xmm5,QWORD PTR[8+r10*8+rax]
-	movq	xmm6,QWORD PTR[16+r10*8+rax]
-	movq	xmm7,QWORD PTR[24+r10*8+rax]
+	lea	r12,[96+r11*8+r12]
+	movq	xmm4,QWORD[r10*8+rax]
+	movq	xmm5,QWORD[8+r10*8+rax]
+	movq	xmm6,QWORD[16+r10*8+rax]
+	movq	xmm7,QWORD[24+r10*8+rax]
 
-	movq	xmm0,QWORD PTR[(((-96)))+r12]
-	movq	xmm1,QWORD PTR[((-32))+r12]
+	movq	xmm0,QWORD[(((-96)))+r12]
+	movq	xmm1,QWORD[((-32))+r12]
 	pand	xmm0,xmm4
-	movq	xmm2,QWORD PTR[32+r12]
+	movq	xmm2,QWORD[32+r12]
 	pand	xmm1,xmm5
-	movq	xmm3,QWORD PTR[96+r12]
+	movq	xmm3,QWORD[96+r12]
 	pand	xmm2,xmm6
 	por	xmm0,xmm1
 	pand	xmm3,xmm7
 	por	xmm0,xmm2
-	lea	r12,QWORD PTR[256+r12]
+	lea	r12,[256+r12]
 	por	xmm0,xmm3
 
 DB	102,72,15,126,195
 
-	mov	r8,QWORD PTR[r8]
-	mov	rax,QWORD PTR[rsi]
+	mov	r8,QWORD[r8]
+	mov	rax,QWORD[rsi]
 
 	xor	r14,r14
 	xor	r15,r15
 
-	movq	xmm0,QWORD PTR[(((-96)))+r12]
-	movq	xmm1,QWORD PTR[((-32))+r12]
+	movq	xmm0,QWORD[(((-96)))+r12]
+	movq	xmm1,QWORD[((-32))+r12]
 	pand	xmm0,xmm4
-	movq	xmm2,QWORD PTR[32+r12]
+	movq	xmm2,QWORD[32+r12]
 	pand	xmm1,xmm5
 
 	mov	rbp,r8
 	mul	rbx
 	mov	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 
-	movq	xmm3,QWORD PTR[96+r12]
+	movq	xmm3,QWORD[96+r12]
 	pand	xmm2,xmm6
 	por	xmm0,xmm1
 	pand	xmm3,xmm7
@@ -98,78 +102,78 @@
 	mov	r11,rdx
 
 	por	xmm0,xmm2
-	lea	r12,QWORD PTR[256+r12]
+	lea	r12,[256+r12]
 	por	xmm0,xmm3
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	adc	rdx,0
 	mov	r13,rdx
 
-	lea	r15,QWORD PTR[1+r15]
-	jmp	$L$1st_enter
+	lea	r15,[1+r15]
+	jmp	NEAR $L$1st_enter
 
 ALIGN	16
-$L$1st::
+$L$1st:
 	add	r13,rax
-	mov	rax,QWORD PTR[r15*8+rsi]
+	mov	rax,QWORD[r15*8+rsi]
 	adc	rdx,0
 	add	r13,r11
 	mov	r11,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 
-$L$1st_enter::
+$L$1st_enter:
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[r15*8+rcx]
+	mov	rax,QWORD[r15*8+rcx]
 	adc	rdx,0
-	lea	r15,QWORD PTR[1+r15]
+	lea	r15,[1+r15]
 	mov	r10,rdx
 
 	mul	rbp
 	cmp	r15,r9
-	jne	$L$1st
+	jne	NEAR $L$1st
 
 DB	102,72,15,126,195
 
 	add	r13,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	r13,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 	mov	r11,r10
 
 	xor	rdx,rdx
 	add	r13,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r9*8+rsp],r13
-	mov	QWORD PTR[r9*8+rsp],rdx
+	mov	QWORD[((-8))+r9*8+rsp],r13
+	mov	QWORD[r9*8+rsp],rdx
 
-	lea	r14,QWORD PTR[1+r14]
-	jmp	$L$outer
+	lea	r14,[1+r14]
+	jmp	NEAR $L$outer
 ALIGN	16
-$L$outer::
+$L$outer:
 	xor	r15,r15
 	mov	rbp,r8
-	mov	r10,QWORD PTR[rsp]
+	mov	r10,QWORD[rsp]
 
-	movq	xmm0,QWORD PTR[(((-96)))+r12]
-	movq	xmm1,QWORD PTR[((-32))+r12]
+	movq	xmm0,QWORD[(((-96)))+r12]
+	movq	xmm1,QWORD[((-32))+r12]
 	pand	xmm0,xmm4
-	movq	xmm2,QWORD PTR[32+r12]
+	movq	xmm2,QWORD[32+r12]
 	pand	xmm1,xmm5
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	adc	rdx,0
 
-	movq	xmm3,QWORD PTR[96+r12]
+	movq	xmm3,QWORD[96+r12]
 	pand	xmm2,xmm6
 	por	xmm0,xmm1
 	pand	xmm3,xmm7
@@ -178,53 +182,53 @@
 	mov	r11,rdx
 
 	por	xmm0,xmm2
-	lea	r12,QWORD PTR[256+r12]
+	lea	r12,[256+r12]
 	por	xmm0,xmm3
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+rsi]
+	mov	rax,QWORD[8+rsi]
 	adc	rdx,0
-	mov	r10,QWORD PTR[8+rsp]
+	mov	r10,QWORD[8+rsp]
 	mov	r13,rdx
 
-	lea	r15,QWORD PTR[1+r15]
-	jmp	$L$inner_enter
+	lea	r15,[1+r15]
+	jmp	NEAR $L$inner_enter
 
 ALIGN	16
-$L$inner::
+$L$inner:
 	add	r13,rax
-	mov	rax,QWORD PTR[r15*8+rsi]
+	mov	rax,QWORD[r15*8+rsi]
 	adc	rdx,0
 	add	r13,r10
-	mov	r10,QWORD PTR[r15*8+rsp]
+	mov	r10,QWORD[r15*8+rsp]
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 
-$L$inner_enter::
+$L$inner_enter:
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[r15*8+rcx]
+	mov	rax,QWORD[r15*8+rcx]
 	adc	rdx,0
 	add	r10,r11
 	mov	r11,rdx
 	adc	r11,0
-	lea	r15,QWORD PTR[1+r15]
+	lea	r15,[1+r15]
 
 	mul	rbp
 	cmp	r15,r9
-	jne	$L$inner
+	jne	NEAR $L$inner
 
 DB	102,72,15,126,195
 
 	add	r13,rax
-	mov	rax,QWORD PTR[rsi]
+	mov	rax,QWORD[rsi]
 	adc	rdx,0
 	add	r13,r10
-	mov	r10,QWORD PTR[r15*8+rsp]
+	mov	r10,QWORD[r15*8+rsp]
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r15*8+rsp],r13
+	mov	QWORD[((-16))+r15*8+rsp],r13
 	mov	r13,rdx
 
 	xor	rdx,rdx
@@ -232,76 +236,75 @@
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r9*8+rsp],r13
-	mov	QWORD PTR[r9*8+rsp],rdx
+	mov	QWORD[((-8))+r9*8+rsp],r13
+	mov	QWORD[r9*8+rsp],rdx
 
-	lea	r14,QWORD PTR[1+r14]
+	lea	r14,[1+r14]
 	cmp	r14,r9
-	jb	$L$outer
+	jb	NEAR $L$outer
 
 	xor	r14,r14
-	mov	rax,QWORD PTR[rsp]
-	lea	rsi,QWORD PTR[rsp]
+	mov	rax,QWORD[rsp]
+	lea	rsi,[rsp]
 	mov	r15,r9
-	jmp	$L$sub
+	jmp	NEAR $L$sub
 ALIGN	16
-$L$sub::	sbb	rax,QWORD PTR[r14*8+rcx]
-	mov	QWORD PTR[r14*8+rdi],rax
-	mov	rax,QWORD PTR[8+r14*8+rsi]
-	lea	r14,QWORD PTR[1+r14]
+$L$sub:	sbb	rax,QWORD[r14*8+rcx]
+	mov	QWORD[r14*8+rdi],rax
+	mov	rax,QWORD[8+r14*8+rsi]
+	lea	r14,[1+r14]
 	dec	r15
-	jnz	$L$sub
+	jnz	NEAR $L$sub
 
 	sbb	rax,0
 	xor	r14,r14
 	mov	r15,r9
 ALIGN	16
-$L$copy::
-	mov	rsi,QWORD PTR[r14*8+rsp]
-	mov	rcx,QWORD PTR[r14*8+rdi]
+$L$copy:
+	mov	rsi,QWORD[r14*8+rsp]
+	mov	rcx,QWORD[r14*8+rdi]
 	xor	rsi,rcx
 	and	rsi,rax
 	xor	rsi,rcx
-	mov	QWORD PTR[r14*8+rsp],r14
-	mov	QWORD PTR[r14*8+rdi],rsi
-	lea	r14,QWORD PTR[1+r14]
+	mov	QWORD[r14*8+rsp],r14
+	mov	QWORD[r14*8+rdi],rsi
+	lea	r14,[1+r14]
 	sub	r15,1
-	jnz	$L$copy
+	jnz	NEAR $L$copy
 
-	mov	rsi,QWORD PTR[8+r9*8+rsp]
+	mov	rsi,QWORD[8+r9*8+rsp]
 	mov	rax,1
-	movaps	xmm6,XMMWORD PTR[((-88))+rsi]
-	movaps	xmm7,XMMWORD PTR[((-72))+rsi]
-	mov	r15,QWORD PTR[((-48))+rsi]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$mul_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	movaps	xmm6,XMMWORD[((-88))+rsi]
+	movaps	xmm7,XMMWORD[((-72))+rsi]
+	mov	r15,QWORD[((-48))+rsi]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$mul_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_mul_mont_gather5::
-bn_mul_mont_gather5	ENDP
+$L$SEH_end_bn_mul_mont_gather5:
 
 ALIGN	32
-bn_mul4x_mont_gather5	PROC PRIVATE
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_mul4x_mont_gather5:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_mul4x_mont_gather5::
+$L$SEH_begin_bn_mul4x_mont_gather5:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-$L$mul4x_enter::
-DB	067h
+$L$mul4x_enter:
+DB	0x67
 	mov	rax,rsp
 	push	rbx
 	push	rbp
@@ -309,10 +312,10 @@
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-40))+rsp]
-	movaps	XMMWORD PTR[rsp],xmm6
-	movaps	XMMWORD PTR[16+rsp],xmm7
-DB	067h
+	lea	rsp,[((-40))+rsp]
+	movaps	XMMWORD[rsp],xmm6
+	movaps	XMMWORD[16+rsp],xmm7
+DB	0x67
 	mov	r10d,r9d
 	shl	r9d,3
 	shl	r10d,3+2
@@ -325,107 +328,106 @@
 
 
 
-	lea	r11,QWORD PTR[((-64))+r9*2+rsp]
+	lea	r11,[((-64))+r9*2+rsp]
 	sub	r11,rsi
 	and	r11,4095
 	cmp	r10,r11
-	jb	$L$mul4xsp_alt
+	jb	NEAR $L$mul4xsp_alt
 	sub	rsp,r11
-	lea	rsp,QWORD PTR[((-64))+r9*2+rsp]
-	jmp	$L$mul4xsp_done
+	lea	rsp,[((-64))+r9*2+rsp]
+	jmp	NEAR $L$mul4xsp_done
 
 ALIGN	32
-$L$mul4xsp_alt::
-	lea	r10,QWORD PTR[((4096-64))+r9*2]
-	lea	rsp,QWORD PTR[((-64))+r9*2+rsp]
+$L$mul4xsp_alt:
+	lea	r10,[((4096-64))+r9*2]
+	lea	rsp,[((-64))+r9*2+rsp]
 	sub	r11,r10
 	mov	r10,0
 	cmovc	r11,r10
 	sub	rsp,r11
-$L$mul4xsp_done::
+$L$mul4xsp_done:
 	and	rsp,-64
 	neg	r9
 
-	mov	QWORD PTR[40+rsp],rax
-$L$mul4x_body::
+	mov	QWORD[40+rsp],rax
+$L$mul4x_body:
 
 	call	mul4x_internal
 
-	mov	rsi,QWORD PTR[40+rsp]
+	mov	rsi,QWORD[40+rsp]
 	mov	rax,1
-	movaps	xmm6,XMMWORD PTR[((-88))+rsi]
-	movaps	xmm7,XMMWORD PTR[((-72))+rsi]
-	mov	r15,QWORD PTR[((-48))+rsi]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$mul4x_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	movaps	xmm6,XMMWORD[((-88))+rsi]
+	movaps	xmm7,XMMWORD[((-72))+rsi]
+	mov	r15,QWORD[((-48))+rsi]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$mul4x_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_mul4x_mont_gather5::
-bn_mul4x_mont_gather5	ENDP
+$L$SEH_end_bn_mul4x_mont_gather5:
 
 
 ALIGN	32
-mul4x_internal	PROC PRIVATE
+mul4x_internal:
 	shl	r9,5
-	mov	r10d,DWORD PTR[56+rax]
-	lea	r13,QWORD PTR[256+r9*1+rdx]
+	mov	r10d,DWORD[56+rax]
+	lea	r13,[256+r9*1+rdx]
 	shr	r9,5
 	mov	r11,r10
 	shr	r10,3
 	and	r11,7
 	not	r10
-	lea	rax,QWORD PTR[$L$magic_masks]
+	lea	rax,[$L$magic_masks]
 	and	r10,3
-	lea	r12,QWORD PTR[96+r11*8+rdx]
-	movq	xmm4,QWORD PTR[r10*8+rax]
-	movq	xmm5,QWORD PTR[8+r10*8+rax]
+	lea	r12,[96+r11*8+rdx]
+	movq	xmm4,QWORD[r10*8+rax]
+	movq	xmm5,QWORD[8+r10*8+rax]
 	add	r11,7
-	movq	xmm6,QWORD PTR[16+r10*8+rax]
-	movq	xmm7,QWORD PTR[24+r10*8+rax]
+	movq	xmm6,QWORD[16+r10*8+rax]
+	movq	xmm7,QWORD[24+r10*8+rax]
 	and	r11,7
 
-	movq	xmm0,QWORD PTR[(((-96)))+r12]
-	lea	r14,QWORD PTR[256+r12]
-	movq	xmm1,QWORD PTR[((-32))+r12]
+	movq	xmm0,QWORD[(((-96)))+r12]
+	lea	r14,[256+r12]
+	movq	xmm1,QWORD[((-32))+r12]
 	pand	xmm0,xmm4
-	movq	xmm2,QWORD PTR[32+r12]
+	movq	xmm2,QWORD[32+r12]
 	pand	xmm1,xmm5
-	movq	xmm3,QWORD PTR[96+r12]
+	movq	xmm3,QWORD[96+r12]
 	pand	xmm2,xmm6
-DB	067h
+DB	0x67
 	por	xmm0,xmm1
-	movq	xmm1,QWORD PTR[((-96))+r14]
-DB	067h
+	movq	xmm1,QWORD[((-96))+r14]
+DB	0x67
 	pand	xmm3,xmm7
-DB	067h
+DB	0x67
 	por	xmm0,xmm2
-	movq	xmm2,QWORD PTR[((-32))+r14]
-DB	067h
+	movq	xmm2,QWORD[((-32))+r14]
+DB	0x67
 	pand	xmm1,xmm4
-DB	067h
+DB	0x67
 	por	xmm0,xmm3
-	movq	xmm3,QWORD PTR[32+r14]
+	movq	xmm3,QWORD[32+r14]
 
 DB	102,72,15,126,195
-	movq	xmm0,QWORD PTR[96+r14]
-	mov	QWORD PTR[((16+8))+rsp],r13
-	mov	QWORD PTR[((56+8))+rsp],rdi
+	movq	xmm0,QWORD[96+r14]
+	mov	QWORD[((16+8))+rsp],r13
+	mov	QWORD[((56+8))+rsp],rdi
 
-	mov	r8,QWORD PTR[r8]
-	mov	rax,QWORD PTR[rsi]
-	lea	rsi,QWORD PTR[r9*1+rsi]
+	mov	r8,QWORD[r8]
+	mov	rax,QWORD[rsi]
+	lea	rsi,[r9*1+rsi]
 	neg	r9
 
 	mov	rbp,r8
 	mul	rbx
 	mov	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 
 	pand	xmm2,xmm5
 	pand	xmm3,xmm6
@@ -439,349 +441,349 @@
 
 
 
-	lea	r14,QWORD PTR[((64+8))+r11*8+rsp]
+	lea	r14,[((64+8))+r11*8+rsp]
 	mov	r11,rdx
 
 	pand	xmm0,xmm7
 	por	xmm1,xmm3
-	lea	r12,QWORD PTR[512+r12]
+	lea	r12,[512+r12]
 	por	xmm0,xmm1
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+r9*1+rsi]
+	mov	rax,QWORD[8+r9*1+rsi]
 	adc	rdx,0
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[16+rcx]
+	mov	rax,QWORD[16+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[16+r9*1+rsi]
+	mov	rax,QWORD[16+r9*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
-	lea	r15,QWORD PTR[32+r9]
-	lea	rcx,QWORD PTR[64+rcx]
+	lea	r15,[32+r9]
+	lea	rcx,[64+rcx]
 	adc	rdx,0
-	mov	QWORD PTR[r14],rdi
+	mov	QWORD[r14],rdi
 	mov	r13,rdx
-	jmp	$L$1st4x
+	jmp	NEAR $L$1st4x
 
 ALIGN	32
-$L$1st4x::
+$L$1st4x:
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-32))+rcx]
-	lea	r14,QWORD PTR[32+r14]
+	mov	rax,QWORD[((-32))+rcx]
+	lea	r14,[32+r14]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+r15*1+rsi]
+	mov	rax,QWORD[((-8))+r15*1+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r14],r13
+	mov	QWORD[((-24))+r14],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-16))+rcx]
+	mov	rax,QWORD[((-16))+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[r15*1+rsi]
+	mov	rax,QWORD[r15*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r14],rdi
+	mov	QWORD[((-16))+r14],rdi
 	mov	r13,rdx
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[8+r15*1+rsi]
+	mov	rax,QWORD[8+r15*1+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r14],r13
+	mov	QWORD[((-8))+r14],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[16+rcx]
+	mov	rax,QWORD[16+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[16+r15*1+rsi]
+	mov	rax,QWORD[16+r15*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
-	lea	rcx,QWORD PTR[64+rcx]
+	lea	rcx,[64+rcx]
 	adc	rdx,0
-	mov	QWORD PTR[r14],rdi
+	mov	QWORD[r14],rdi
 	mov	r13,rdx
 
 	add	r15,32
-	jnz	$L$1st4x
+	jnz	NEAR $L$1st4x
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-32))+rcx]
-	lea	r14,QWORD PTR[32+r14]
+	mov	rax,QWORD[((-32))+rcx]
+	lea	r14,[32+r14]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+rsi]
+	mov	rax,QWORD[((-8))+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r14],r13
+	mov	QWORD[((-24))+r14],r13
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-16))+rcx]
+	mov	rax,QWORD[((-16))+rcx]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[r9*1+rsi]
+	mov	rax,QWORD[r9*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r14],rdi
+	mov	QWORD[((-16))+r14],rdi
 	mov	r13,rdx
 
 DB	102,72,15,126,195
-	lea	rcx,QWORD PTR[r9*2+rcx]
+	lea	rcx,[r9*2+rcx]
 
 	xor	rdi,rdi
 	add	r13,r10
 	adc	rdi,0
-	mov	QWORD PTR[((-8))+r14],r13
+	mov	QWORD[((-8))+r14],r13
 
-	jmp	$L$outer4x
+	jmp	NEAR $L$outer4x
 
 ALIGN	32
-$L$outer4x::
-	mov	r10,QWORD PTR[r9*1+r14]
+$L$outer4x:
+	mov	r10,QWORD[r9*1+r14]
 	mov	rbp,r8
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	adc	rdx,0
 
-	movq	xmm0,QWORD PTR[(((-96)))+r12]
-	movq	xmm1,QWORD PTR[((-32))+r12]
+	movq	xmm0,QWORD[(((-96)))+r12]
+	movq	xmm1,QWORD[((-32))+r12]
 	pand	xmm0,xmm4
-	movq	xmm2,QWORD PTR[32+r12]
+	movq	xmm2,QWORD[32+r12]
 	pand	xmm1,xmm5
-	movq	xmm3,QWORD PTR[96+r12]
+	movq	xmm3,QWORD[96+r12]
 
 	imul	rbp,r10
-DB	067h
+DB	0x67
 	mov	r11,rdx
-	mov	QWORD PTR[r14],rdi
+	mov	QWORD[r14],rdi
 
 	pand	xmm2,xmm6
 	por	xmm0,xmm1
 	pand	xmm3,xmm7
 	por	xmm0,xmm2
-	lea	r14,QWORD PTR[r9*1+r14]
-	lea	r12,QWORD PTR[256+r12]
+	lea	r14,[r9*1+r14]
+	lea	r12,[256+r12]
 	por	xmm0,xmm3
 
 	mul	rbp
 	add	r10,rax
-	mov	rax,QWORD PTR[8+r9*1+rsi]
+	mov	rax,QWORD[8+r9*1+rsi]
 	adc	rdx,0
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[16+rcx]
+	mov	rax,QWORD[16+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[8+r14]
+	add	r11,QWORD[8+r14]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[16+r9*1+rsi]
+	mov	rax,QWORD[16+r9*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
-	lea	r15,QWORD PTR[32+r9]
-	lea	rcx,QWORD PTR[64+rcx]
+	lea	r15,[32+r9]
+	lea	rcx,[64+rcx]
 	adc	rdx,0
 	mov	r13,rdx
-	jmp	$L$inner4x
+	jmp	NEAR $L$inner4x
 
 ALIGN	32
-$L$inner4x::
+$L$inner4x:
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-32))+rcx]
+	mov	rax,QWORD[((-32))+rcx]
 	adc	rdx,0
-	add	r10,QWORD PTR[16+r14]
-	lea	r14,QWORD PTR[32+r14]
+	add	r10,QWORD[16+r14]
+	lea	r14,[32+r14]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+r15*1+rsi]
+	mov	rax,QWORD[((-8))+r15*1+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-32))+r14],rdi
+	mov	QWORD[((-32))+r14],rdi
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[((-16))+rcx]
+	mov	rax,QWORD[((-16))+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[((-8))+r14]
+	add	r11,QWORD[((-8))+r14]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[r15*1+rsi]
+	mov	rax,QWORD[r15*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r14],r13
+	mov	QWORD[((-24))+r14],r13
 	mov	r13,rdx
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[rcx]
+	mov	rax,QWORD[rcx]
 	adc	rdx,0
-	add	r10,QWORD PTR[r14]
+	add	r10,QWORD[r14]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[8+r15*1+rsi]
+	mov	rax,QWORD[8+r15*1+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+r14],rdi
+	mov	QWORD[((-16))+r14],rdi
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[16+rcx]
+	mov	rax,QWORD[16+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[8+r14]
+	add	r11,QWORD[8+r14]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[16+r15*1+rsi]
+	mov	rax,QWORD[16+r15*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
-	lea	rcx,QWORD PTR[64+rcx]
+	lea	rcx,[64+rcx]
 	adc	rdx,0
-	mov	QWORD PTR[((-8))+r14],r13
+	mov	QWORD[((-8))+r14],r13
 	mov	r13,rdx
 
 	add	r15,32
-	jnz	$L$inner4x
+	jnz	NEAR $L$inner4x
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[((-32))+rcx]
+	mov	rax,QWORD[((-32))+rcx]
 	adc	rdx,0
-	add	r10,QWORD PTR[16+r14]
-	lea	r14,QWORD PTR[32+r14]
+	add	r10,QWORD[16+r14]
+	lea	r14,[32+r14]
 	adc	rdx,0
 	mov	r11,rdx
 
 	mul	rbp
 	add	r13,rax
-	mov	rax,QWORD PTR[((-8))+rsi]
+	mov	rax,QWORD[((-8))+rsi]
 	adc	rdx,0
 	add	r13,r10
 	adc	rdx,0
-	mov	QWORD PTR[((-32))+r14],rdi
+	mov	QWORD[((-32))+r14],rdi
 	mov	rdi,rdx
 
 	mul	rbx
 	add	r11,rax
 	mov	rax,rbp
-	mov	rbp,QWORD PTR[((-16))+rcx]
+	mov	rbp,QWORD[((-16))+rcx]
 	adc	rdx,0
-	add	r11,QWORD PTR[((-8))+r14]
+	add	r11,QWORD[((-8))+r14]
 	adc	rdx,0
 	mov	r10,rdx
 
 	mul	rbp
 	add	rdi,rax
-	mov	rax,QWORD PTR[r9*1+rsi]
+	mov	rax,QWORD[r9*1+rsi]
 	adc	rdx,0
 	add	rdi,r11
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+r14],r13
+	mov	QWORD[((-24))+r14],r13
 	mov	r13,rdx
 
 DB	102,72,15,126,195
-	mov	QWORD PTR[((-16))+r14],rdi
-	lea	rcx,QWORD PTR[r9*2+rcx]
+	mov	QWORD[((-16))+r14],rdi
+	lea	rcx,[r9*2+rcx]
 
 	xor	rdi,rdi
 	add	r13,r10
 	adc	rdi,0
-	add	r13,QWORD PTR[r14]
+	add	r13,QWORD[r14]
 	adc	rdi,0
-	mov	QWORD PTR[((-8))+r14],r13
+	mov	QWORD[((-8))+r14],r13
 
-	cmp	r12,QWORD PTR[((16+8))+rsp]
-	jb	$L$outer4x
+	cmp	r12,QWORD[((16+8))+rsp]
+	jb	NEAR $L$outer4x
 	sub	rbp,r13
 	adc	r15,r15
 	or	rdi,r15
 	xor	rdi,1
-	lea	rbx,QWORD PTR[r9*1+r14]
-	lea	rbp,QWORD PTR[rdi*8+rcx]
+	lea	rbx,[r9*1+r14]
+	lea	rbp,[rdi*8+rcx]
 	mov	rcx,r9
 	sar	rcx,3+2
-	mov	rdi,QWORD PTR[((56+8))+rsp]
-	jmp	$L$sqr4x_sub
-mul4x_internal	ENDP
-PUBLIC	bn_power5
+	mov	rdi,QWORD[((56+8))+rsp]
+	jmp	NEAR $L$sqr4x_sub
+
+global	bn_power5
 
 ALIGN	32
-bn_power5	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_power5:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_power5::
+$L$SEH_begin_bn_power5:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	mov	rax,rsp
@@ -791,14 +793,14 @@
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-40))+rsp]
-	movaps	XMMWORD PTR[rsp],xmm6
-	movaps	XMMWORD PTR[16+rsp],xmm7
+	lea	rsp,[((-40))+rsp]
+	movaps	XMMWORD[rsp],xmm6
+	movaps	XMMWORD[16+rsp],xmm7
 	mov	r10d,r9d
 	shl	r9d,3
 	shl	r10d,3+2
 	neg	r9
-	mov	r8,QWORD PTR[r8]
+	mov	r8,QWORD[r8]
 
 
 
@@ -806,24 +808,24 @@
 
 
 
-	lea	r11,QWORD PTR[((-64))+r9*2+rsp]
+	lea	r11,[((-64))+r9*2+rsp]
 	sub	r11,rsi
 	and	r11,4095
 	cmp	r10,r11
-	jb	$L$pwr_sp_alt
+	jb	NEAR $L$pwr_sp_alt
 	sub	rsp,r11
-	lea	rsp,QWORD PTR[((-64))+r9*2+rsp]
-	jmp	$L$pwr_sp_done
+	lea	rsp,[((-64))+r9*2+rsp]
+	jmp	NEAR $L$pwr_sp_done
 
 ALIGN	32
-$L$pwr_sp_alt::
-	lea	r10,QWORD PTR[((4096-64))+r9*2]
-	lea	rsp,QWORD PTR[((-64))+r9*2+rsp]
+$L$pwr_sp_alt:
+	lea	r10,[((4096-64))+r9*2]
+	lea	rsp,[((-64))+r9*2+rsp]
 	sub	r11,r10
 	mov	r10,0
 	cmovc	r11,r10
 	sub	rsp,r11
-$L$pwr_sp_done::
+$L$pwr_sp_done:
 	and	rsp,-64
 	mov	r10,r9
 	neg	r9
@@ -837,9 +839,9 @@
 
 
 
-	mov	QWORD PTR[32+rsp],r8
-	mov	QWORD PTR[40+rsp],rax
-$L$power5_body::
+	mov	QWORD[32+rsp],r8
+	mov	QWORD[40+rsp],rax
+$L$power5_body:
 DB	102,72,15,110,207
 DB	102,72,15,110,209
 DB	102,73,15,110,218
@@ -854,33 +856,32 @@
 DB	102,72,15,126,209
 DB	102,72,15,126,226
 	mov	rdi,rsi
-	mov	rax,QWORD PTR[40+rsp]
-	lea	r8,QWORD PTR[32+rsp]
+	mov	rax,QWORD[40+rsp]
+	lea	r8,[32+rsp]
 
 	call	mul4x_internal
 
-	mov	rsi,QWORD PTR[40+rsp]
+	mov	rsi,QWORD[40+rsp]
 	mov	rax,1
-	mov	r15,QWORD PTR[((-48))+rsi]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$power5_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[((-48))+rsi]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$power5_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_power5::
-bn_power5	ENDP
+$L$SEH_end_bn_power5:
 
-PUBLIC	bn_sqr8x_internal
+global	bn_sqr8x_internal
 
 
 ALIGN	32
-bn_sqr8x_internal	PROC PUBLIC
-__bn_sqr8x_internal::
+bn_sqr8x_internal:
+__bn_sqr8x_internal:
 
 
 
@@ -954,40 +955,40 @@
 
 
 
-	lea	rbp,QWORD PTR[32+r10]
-	lea	rsi,QWORD PTR[r9*1+rsi]
+	lea	rbp,[32+r10]
+	lea	rsi,[r9*1+rsi]
 
 	mov	rcx,r9
 
 
-	mov	r14,QWORD PTR[((-32))+rbp*1+rsi]
-	lea	rdi,QWORD PTR[((48+8))+r9*2+rsp]
-	mov	rax,QWORD PTR[((-24))+rbp*1+rsi]
-	lea	rdi,QWORD PTR[((-32))+rbp*1+rdi]
-	mov	rbx,QWORD PTR[((-16))+rbp*1+rsi]
+	mov	r14,QWORD[((-32))+rbp*1+rsi]
+	lea	rdi,[((48+8))+r9*2+rsp]
+	mov	rax,QWORD[((-24))+rbp*1+rsi]
+	lea	rdi,[((-32))+rbp*1+rdi]
+	mov	rbx,QWORD[((-16))+rbp*1+rsi]
 	mov	r15,rax
 
 	mul	r14
 	mov	r10,rax
 	mov	rax,rbx
 	mov	r11,rdx
-	mov	QWORD PTR[((-24))+rbp*1+rdi],r10
+	mov	QWORD[((-24))+rbp*1+rdi],r10
 
 	mul	r14
 	add	r11,rax
 	mov	rax,rbx
 	adc	rdx,0
-	mov	QWORD PTR[((-16))+rbp*1+rdi],r11
+	mov	QWORD[((-16))+rbp*1+rdi],r11
 	mov	r10,rdx
 
 
-	mov	rbx,QWORD PTR[((-8))+rbp*1+rsi]
+	mov	rbx,QWORD[((-8))+rbp*1+rsi]
 	mul	r15
 	mov	r12,rax
 	mov	rax,rbx
 	mov	r13,rdx
 
-	lea	rcx,QWORD PTR[rbp]
+	lea	rcx,[rbp]
 	mul	r14
 	add	r10,rax
 	mov	rax,rbx
@@ -995,12 +996,12 @@
 	adc	r11,0
 	add	r10,r12
 	adc	r11,0
-	mov	QWORD PTR[((-8))+rcx*1+rdi],r10
-	jmp	$L$sqr4x_1st
+	mov	QWORD[((-8))+rcx*1+rdi],r10
+	jmp	NEAR $L$sqr4x_1st
 
 ALIGN	32
-$L$sqr4x_1st::
-	mov	rbx,QWORD PTR[rcx*1+rsi]
+$L$sqr4x_1st:
+	mov	rbx,QWORD[rcx*1+rsi]
 	mul	r15
 	add	r13,rax
 	mov	rax,rbx
@@ -1010,7 +1011,7 @@
 	mul	r14
 	add	r11,rax
 	mov	rax,rbx
-	mov	rbx,QWORD PTR[8+rcx*1+rsi]
+	mov	rbx,QWORD[8+rcx*1+rsi]
 	mov	r10,rdx
 	adc	r10,0
 	add	r11,r13
@@ -1020,14 +1021,14 @@
 	mul	r15
 	add	r12,rax
 	mov	rax,rbx
-	mov	QWORD PTR[rcx*1+rdi],r11
+	mov	QWORD[rcx*1+rdi],r11
 	mov	r13,rdx
 	adc	r13,0
 
 	mul	r14
 	add	r10,rax
 	mov	rax,rbx
-	mov	rbx,QWORD PTR[16+rcx*1+rsi]
+	mov	rbx,QWORD[16+rcx*1+rsi]
 	mov	r11,rdx
 	adc	r11,0
 	add	r10,r12
@@ -1036,14 +1037,14 @@
 	mul	r15
 	add	r13,rax
 	mov	rax,rbx
-	mov	QWORD PTR[8+rcx*1+rdi],r10
+	mov	QWORD[8+rcx*1+rdi],r10
 	mov	r12,rdx
 	adc	r12,0
 
 	mul	r14
 	add	r11,rax
 	mov	rax,rbx
-	mov	rbx,QWORD PTR[24+rcx*1+rsi]
+	mov	rbx,QWORD[24+rcx*1+rsi]
 	mov	r10,rdx
 	adc	r10,0
 	add	r11,r13
@@ -1053,10 +1054,10 @@
 	mul	r15
 	add	r12,rax
 	mov	rax,rbx
-	mov	QWORD PTR[16+rcx*1+rdi],r11
+	mov	QWORD[16+rcx*1+rdi],r11
 	mov	r13,rdx
 	adc	r13,0
-	lea	rcx,QWORD PTR[32+rcx]
+	lea	rcx,[32+rcx]
 
 	mul	r14
 	add	r10,rax
@@ -1065,57 +1066,57 @@
 	adc	r11,0
 	add	r10,r12
 	adc	r11,0
-	mov	QWORD PTR[((-8))+rcx*1+rdi],r10
+	mov	QWORD[((-8))+rcx*1+rdi],r10
 
 	cmp	rcx,0
-	jne	$L$sqr4x_1st
+	jne	NEAR $L$sqr4x_1st
 
 	mul	r15
 	add	r13,rax
-	lea	rbp,QWORD PTR[16+rbp]
+	lea	rbp,[16+rbp]
 	adc	rdx,0
 	add	r13,r11
 	adc	rdx,0
 
-	mov	QWORD PTR[rdi],r13
+	mov	QWORD[rdi],r13
 	mov	r12,rdx
-	mov	QWORD PTR[8+rdi],rdx
-	jmp	$L$sqr4x_outer
+	mov	QWORD[8+rdi],rdx
+	jmp	NEAR $L$sqr4x_outer
 
 ALIGN	32
-$L$sqr4x_outer::
-	mov	r14,QWORD PTR[((-32))+rbp*1+rsi]
-	lea	rdi,QWORD PTR[((48+8))+r9*2+rsp]
-	mov	rax,QWORD PTR[((-24))+rbp*1+rsi]
-	lea	rdi,QWORD PTR[((-32))+rbp*1+rdi]
-	mov	rbx,QWORD PTR[((-16))+rbp*1+rsi]
+$L$sqr4x_outer:
+	mov	r14,QWORD[((-32))+rbp*1+rsi]
+	lea	rdi,[((48+8))+r9*2+rsp]
+	mov	rax,QWORD[((-24))+rbp*1+rsi]
+	lea	rdi,[((-32))+rbp*1+rdi]
+	mov	rbx,QWORD[((-16))+rbp*1+rsi]
 	mov	r15,rax
 
 	mul	r14
-	mov	r10,QWORD PTR[((-24))+rbp*1+rdi]
+	mov	r10,QWORD[((-24))+rbp*1+rdi]
 	add	r10,rax
 	mov	rax,rbx
 	adc	rdx,0
-	mov	QWORD PTR[((-24))+rbp*1+rdi],r10
+	mov	QWORD[((-24))+rbp*1+rdi],r10
 	mov	r11,rdx
 
 	mul	r14
 	add	r11,rax
 	mov	rax,rbx
 	adc	rdx,0
-	add	r11,QWORD PTR[((-16))+rbp*1+rdi]
+	add	r11,QWORD[((-16))+rbp*1+rdi]
 	mov	r10,rdx
 	adc	r10,0
-	mov	QWORD PTR[((-16))+rbp*1+rdi],r11
+	mov	QWORD[((-16))+rbp*1+rdi],r11
 
 	xor	r12,r12
 
-	mov	rbx,QWORD PTR[((-8))+rbp*1+rsi]
+	mov	rbx,QWORD[((-8))+rbp*1+rsi]
 	mul	r15
 	add	r12,rax
 	mov	rax,rbx
 	adc	rdx,0
-	add	r12,QWORD PTR[((-8))+rbp*1+rdi]
+	add	r12,QWORD[((-8))+rbp*1+rdi]
 	mov	r13,rdx
 	adc	r13,0
 
@@ -1126,27 +1127,27 @@
 	add	r10,r12
 	mov	r11,rdx
 	adc	r11,0
-	mov	QWORD PTR[((-8))+rbp*1+rdi],r10
+	mov	QWORD[((-8))+rbp*1+rdi],r10
 
-	lea	rcx,QWORD PTR[rbp]
-	jmp	$L$sqr4x_inner
+	lea	rcx,[rbp]
+	jmp	NEAR $L$sqr4x_inner
 
 ALIGN	32
-$L$sqr4x_inner::
-	mov	rbx,QWORD PTR[rcx*1+rsi]
+$L$sqr4x_inner:
+	mov	rbx,QWORD[rcx*1+rsi]
 	mul	r15
 	add	r13,rax
 	mov	rax,rbx
 	mov	r12,rdx
 	adc	r12,0
-	add	r13,QWORD PTR[rcx*1+rdi]
+	add	r13,QWORD[rcx*1+rdi]
 	adc	r12,0
 
-DB	067h
+DB	0x67
 	mul	r14
 	add	r11,rax
 	mov	rax,rbx
-	mov	rbx,QWORD PTR[8+rcx*1+rsi]
+	mov	rbx,QWORD[8+rcx*1+rsi]
 	mov	r10,rdx
 	adc	r10,0
 	add	r11,r13
@@ -1154,12 +1155,12 @@
 
 	mul	r15
 	add	r12,rax
-	mov	QWORD PTR[rcx*1+rdi],r11
+	mov	QWORD[rcx*1+rdi],r11
 	mov	rax,rbx
 	mov	r13,rdx
 	adc	r13,0
-	add	r12,QWORD PTR[8+rcx*1+rdi]
-	lea	rcx,QWORD PTR[16+rcx]
+	add	r12,QWORD[8+rcx*1+rdi]
+	lea	rcx,[16+rcx]
 	adc	r13,0
 
 	mul	r14
@@ -1169,31 +1170,31 @@
 	add	r10,r12
 	mov	r11,rdx
 	adc	r11,0
-	mov	QWORD PTR[((-8))+rcx*1+rdi],r10
+	mov	QWORD[((-8))+rcx*1+rdi],r10
 
 	cmp	rcx,0
-	jne	$L$sqr4x_inner
+	jne	NEAR $L$sqr4x_inner
 
-DB	067h
+DB	0x67
 	mul	r15
 	add	r13,rax
 	adc	rdx,0
 	add	r13,r11
 	adc	rdx,0
 
-	mov	QWORD PTR[rdi],r13
+	mov	QWORD[rdi],r13
 	mov	r12,rdx
-	mov	QWORD PTR[8+rdi],rdx
+	mov	QWORD[8+rdi],rdx
 
 	add	rbp,16
-	jnz	$L$sqr4x_outer
+	jnz	NEAR $L$sqr4x_outer
 
 
-	mov	r14,QWORD PTR[((-32))+rsi]
-	lea	rdi,QWORD PTR[((48+8))+r9*2+rsp]
-	mov	rax,QWORD PTR[((-24))+rsi]
-	lea	rdi,QWORD PTR[((-32))+rbp*1+rdi]
-	mov	rbx,QWORD PTR[((-16))+rsi]
+	mov	r14,QWORD[((-32))+rsi]
+	lea	rdi,[((48+8))+r9*2+rsp]
+	mov	rax,QWORD[((-24))+rsi]
+	lea	rdi,[((-32))+rbp*1+rdi]
+	mov	rbx,QWORD[((-16))+rsi]
 	mov	r15,rax
 
 	mul	r14
@@ -1205,17 +1206,17 @@
 	mul	r14
 	add	r11,rax
 	mov	rax,rbx
-	mov	QWORD PTR[((-24))+rdi],r10
+	mov	QWORD[((-24))+rdi],r10
 	mov	r10,rdx
 	adc	r10,0
 	add	r11,r13
-	mov	rbx,QWORD PTR[((-8))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
 	adc	r10,0
 
 	mul	r15
 	add	r12,rax
 	mov	rax,rbx
-	mov	QWORD PTR[((-16))+rdi],r11
+	mov	QWORD[((-16))+rdi],r11
 	mov	r13,rdx
 	adc	r13,0
 
@@ -1226,18 +1227,18 @@
 	adc	r11,0
 	add	r10,r12
 	adc	r11,0
-	mov	QWORD PTR[((-8))+rdi],r10
+	mov	QWORD[((-8))+rdi],r10
 
 	mul	r15
 	add	r13,rax
-	mov	rax,QWORD PTR[((-16))+rsi]
+	mov	rax,QWORD[((-16))+rsi]
 	adc	rdx,0
 	add	r13,r11
 	adc	rdx,0
 
-	mov	QWORD PTR[rdi],r13
+	mov	QWORD[rdi],r13
 	mov	r12,rdx
-	mov	QWORD PTR[8+rdi],rdx
+	mov	QWORD[8+rdi],rdx
 
 	mul	rbx
 	add	rbp,16
@@ -1247,216 +1248,216 @@
 
 	add	rax,r12
 	adc	rdx,0
-	mov	QWORD PTR[8+rdi],rax
-	mov	QWORD PTR[16+rdi],rdx
-	mov	QWORD PTR[24+rdi],r15
+	mov	QWORD[8+rdi],rax
+	mov	QWORD[16+rdi],rdx
+	mov	QWORD[24+rdi],r15
 
-	mov	rax,QWORD PTR[((-16))+rbp*1+rsi]
-	lea	rdi,QWORD PTR[((48+8))+rsp]
+	mov	rax,QWORD[((-16))+rbp*1+rsi]
+	lea	rdi,[((48+8))+rsp]
 	xor	r10,r10
-	mov	r11,QWORD PTR[8+rdi]
+	mov	r11,QWORD[8+rdi]
 
-	lea	r12,QWORD PTR[r10*2+r14]
+	lea	r12,[r10*2+r14]
 	shr	r10,63
-	lea	r13,QWORD PTR[r11*2+rcx]
+	lea	r13,[r11*2+rcx]
 	shr	r11,63
 	or	r13,r10
-	mov	r10,QWORD PTR[16+rdi]
+	mov	r10,QWORD[16+rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[24+rdi]
+	mov	r11,QWORD[24+rdi]
 	adc	r12,rax
-	mov	rax,QWORD PTR[((-8))+rbp*1+rsi]
-	mov	QWORD PTR[rdi],r12
+	mov	rax,QWORD[((-8))+rbp*1+rsi]
+	mov	QWORD[rdi],r12
 	adc	r13,rdx
 
-	lea	rbx,QWORD PTR[r10*2+r14]
-	mov	QWORD PTR[8+rdi],r13
+	lea	rbx,[r10*2+r14]
+	mov	QWORD[8+rdi],r13
 	sbb	r15,r15
 	shr	r10,63
-	lea	r8,QWORD PTR[r11*2+rcx]
+	lea	r8,[r11*2+rcx]
 	shr	r11,63
 	or	r8,r10
-	mov	r10,QWORD PTR[32+rdi]
+	mov	r10,QWORD[32+rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[40+rdi]
+	mov	r11,QWORD[40+rdi]
 	adc	rbx,rax
-	mov	rax,QWORD PTR[rbp*1+rsi]
-	mov	QWORD PTR[16+rdi],rbx
+	mov	rax,QWORD[rbp*1+rsi]
+	mov	QWORD[16+rdi],rbx
 	adc	r8,rdx
-	lea	rbp,QWORD PTR[16+rbp]
-	mov	QWORD PTR[24+rdi],r8
+	lea	rbp,[16+rbp]
+	mov	QWORD[24+rdi],r8
 	sbb	r15,r15
-	lea	rdi,QWORD PTR[64+rdi]
-	jmp	$L$sqr4x_shift_n_add
+	lea	rdi,[64+rdi]
+	jmp	NEAR $L$sqr4x_shift_n_add
 
 ALIGN	32
-$L$sqr4x_shift_n_add::
-	lea	r12,QWORD PTR[r10*2+r14]
+$L$sqr4x_shift_n_add:
+	lea	r12,[r10*2+r14]
 	shr	r10,63
-	lea	r13,QWORD PTR[r11*2+rcx]
+	lea	r13,[r11*2+rcx]
 	shr	r11,63
 	or	r13,r10
-	mov	r10,QWORD PTR[((-16))+rdi]
+	mov	r10,QWORD[((-16))+rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[((-8))+rdi]
+	mov	r11,QWORD[((-8))+rdi]
 	adc	r12,rax
-	mov	rax,QWORD PTR[((-8))+rbp*1+rsi]
-	mov	QWORD PTR[((-32))+rdi],r12
+	mov	rax,QWORD[((-8))+rbp*1+rsi]
+	mov	QWORD[((-32))+rdi],r12
 	adc	r13,rdx
 
-	lea	rbx,QWORD PTR[r10*2+r14]
-	mov	QWORD PTR[((-24))+rdi],r13
+	lea	rbx,[r10*2+r14]
+	mov	QWORD[((-24))+rdi],r13
 	sbb	r15,r15
 	shr	r10,63
-	lea	r8,QWORD PTR[r11*2+rcx]
+	lea	r8,[r11*2+rcx]
 	shr	r11,63
 	or	r8,r10
-	mov	r10,QWORD PTR[rdi]
+	mov	r10,QWORD[rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[8+rdi]
+	mov	r11,QWORD[8+rdi]
 	adc	rbx,rax
-	mov	rax,QWORD PTR[rbp*1+rsi]
-	mov	QWORD PTR[((-16))+rdi],rbx
+	mov	rax,QWORD[rbp*1+rsi]
+	mov	QWORD[((-16))+rdi],rbx
 	adc	r8,rdx
 
-	lea	r12,QWORD PTR[r10*2+r14]
-	mov	QWORD PTR[((-8))+rdi],r8
+	lea	r12,[r10*2+r14]
+	mov	QWORD[((-8))+rdi],r8
 	sbb	r15,r15
 	shr	r10,63
-	lea	r13,QWORD PTR[r11*2+rcx]
+	lea	r13,[r11*2+rcx]
 	shr	r11,63
 	or	r13,r10
-	mov	r10,QWORD PTR[16+rdi]
+	mov	r10,QWORD[16+rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[24+rdi]
+	mov	r11,QWORD[24+rdi]
 	adc	r12,rax
-	mov	rax,QWORD PTR[8+rbp*1+rsi]
-	mov	QWORD PTR[rdi],r12
+	mov	rax,QWORD[8+rbp*1+rsi]
+	mov	QWORD[rdi],r12
 	adc	r13,rdx
 
-	lea	rbx,QWORD PTR[r10*2+r14]
-	mov	QWORD PTR[8+rdi],r13
+	lea	rbx,[r10*2+r14]
+	mov	QWORD[8+rdi],r13
 	sbb	r15,r15
 	shr	r10,63
-	lea	r8,QWORD PTR[r11*2+rcx]
+	lea	r8,[r11*2+rcx]
 	shr	r11,63
 	or	r8,r10
-	mov	r10,QWORD PTR[32+rdi]
+	mov	r10,QWORD[32+rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[40+rdi]
+	mov	r11,QWORD[40+rdi]
 	adc	rbx,rax
-	mov	rax,QWORD PTR[16+rbp*1+rsi]
-	mov	QWORD PTR[16+rdi],rbx
+	mov	rax,QWORD[16+rbp*1+rsi]
+	mov	QWORD[16+rdi],rbx
 	adc	r8,rdx
-	mov	QWORD PTR[24+rdi],r8
+	mov	QWORD[24+rdi],r8
 	sbb	r15,r15
-	lea	rdi,QWORD PTR[64+rdi]
+	lea	rdi,[64+rdi]
 	add	rbp,32
-	jnz	$L$sqr4x_shift_n_add
+	jnz	NEAR $L$sqr4x_shift_n_add
 
-	lea	r12,QWORD PTR[r10*2+r14]
-DB	067h
+	lea	r12,[r10*2+r14]
+DB	0x67
 	shr	r10,63
-	lea	r13,QWORD PTR[r11*2+rcx]
+	lea	r13,[r11*2+rcx]
 	shr	r11,63
 	or	r13,r10
-	mov	r10,QWORD PTR[((-16))+rdi]
+	mov	r10,QWORD[((-16))+rdi]
 	mov	r14,r11
 	mul	rax
 	neg	r15
-	mov	r11,QWORD PTR[((-8))+rdi]
+	mov	r11,QWORD[((-8))+rdi]
 	adc	r12,rax
-	mov	rax,QWORD PTR[((-8))+rsi]
-	mov	QWORD PTR[((-32))+rdi],r12
+	mov	rax,QWORD[((-8))+rsi]
+	mov	QWORD[((-32))+rdi],r12
 	adc	r13,rdx
 
-	lea	rbx,QWORD PTR[r10*2+r14]
-	mov	QWORD PTR[((-24))+rdi],r13
+	lea	rbx,[r10*2+r14]
+	mov	QWORD[((-24))+rdi],r13
 	sbb	r15,r15
 	shr	r10,63
-	lea	r8,QWORD PTR[r11*2+rcx]
+	lea	r8,[r11*2+rcx]
 	shr	r11,63
 	or	r8,r10
 	mul	rax
 	neg	r15
 	adc	rbx,rax
 	adc	r8,rdx
-	mov	QWORD PTR[((-16))+rdi],rbx
-	mov	QWORD PTR[((-8))+rdi],r8
+	mov	QWORD[((-16))+rdi],rbx
+	mov	QWORD[((-8))+rdi],r8
 DB	102,72,15,126,213
-sqr8x_reduction::
+sqr8x_reduction:
 	xor	rax,rax
-	lea	rcx,QWORD PTR[r9*2+rbp]
-	lea	rdx,QWORD PTR[((48+8))+r9*2+rsp]
-	mov	QWORD PTR[((0+8))+rsp],rcx
-	lea	rdi,QWORD PTR[((48+8))+r9*1+rsp]
-	mov	QWORD PTR[((8+8))+rsp],rdx
+	lea	rcx,[r9*2+rbp]
+	lea	rdx,[((48+8))+r9*2+rsp]
+	mov	QWORD[((0+8))+rsp],rcx
+	lea	rdi,[((48+8))+r9*1+rsp]
+	mov	QWORD[((8+8))+rsp],rdx
 	neg	r9
-	jmp	$L$8x_reduction_loop
+	jmp	NEAR $L$8x_reduction_loop
 
 ALIGN	32
-$L$8x_reduction_loop::
-	lea	rdi,QWORD PTR[r9*1+rdi]
-DB	066h
-	mov	rbx,QWORD PTR[rdi]
-	mov	r9,QWORD PTR[8+rdi]
-	mov	r10,QWORD PTR[16+rdi]
-	mov	r11,QWORD PTR[24+rdi]
-	mov	r12,QWORD PTR[32+rdi]
-	mov	r13,QWORD PTR[40+rdi]
-	mov	r14,QWORD PTR[48+rdi]
-	mov	r15,QWORD PTR[56+rdi]
-	mov	QWORD PTR[rdx],rax
-	lea	rdi,QWORD PTR[64+rdi]
+$L$8x_reduction_loop:
+	lea	rdi,[r9*1+rdi]
+DB	0x66
+	mov	rbx,QWORD[rdi]
+	mov	r9,QWORD[8+rdi]
+	mov	r10,QWORD[16+rdi]
+	mov	r11,QWORD[24+rdi]
+	mov	r12,QWORD[32+rdi]
+	mov	r13,QWORD[40+rdi]
+	mov	r14,QWORD[48+rdi]
+	mov	r15,QWORD[56+rdi]
+	mov	QWORD[rdx],rax
+	lea	rdi,[64+rdi]
 
-DB	067h
+DB	0x67
 	mov	r8,rbx
-	imul	rbx,QWORD PTR[((32+8))+rsp]
-	mov	rax,QWORD PTR[rbp]
+	imul	rbx,QWORD[((32+8))+rsp]
+	mov	rax,QWORD[rbp]
 	mov	ecx,8
-	jmp	$L$8x_reduce
+	jmp	NEAR $L$8x_reduce
 
 ALIGN	32
-$L$8x_reduce::
+$L$8x_reduce:
 	mul	rbx
-	mov	rax,QWORD PTR[16+rbp]
+	mov	rax,QWORD[16+rbp]
 	neg	r8
 	mov	r8,rdx
 	adc	r8,0
 
 	mul	rbx
 	add	r9,rax
-	mov	rax,QWORD PTR[32+rbp]
+	mov	rax,QWORD[32+rbp]
 	adc	rdx,0
 	add	r8,r9
-	mov	QWORD PTR[((48-8+8))+rcx*8+rsp],rbx
+	mov	QWORD[((48-8+8))+rcx*8+rsp],rbx
 	mov	r9,rdx
 	adc	r9,0
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[48+rbp]
+	mov	rax,QWORD[48+rbp]
 	adc	rdx,0
 	add	r9,r10
-	mov	rsi,QWORD PTR[((32+8))+rsp]
+	mov	rsi,QWORD[((32+8))+rsp]
 	mov	r10,rdx
 	adc	r10,0
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[64+rbp]
+	mov	rax,QWORD[64+rbp]
 	adc	rdx,0
 	imul	rsi,r8
 	add	r10,r11
@@ -1465,7 +1466,7 @@
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[80+rbp]
+	mov	rax,QWORD[80+rbp]
 	adc	rdx,0
 	add	r11,r12
 	mov	r12,rdx
@@ -1473,7 +1474,7 @@
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[96+rbp]
+	mov	rax,QWORD[96+rbp]
 	adc	rdx,0
 	add	r12,r13
 	mov	r13,rdx
@@ -1481,7 +1482,7 @@
 
 	mul	rbx
 	add	r14,rax
-	mov	rax,QWORD PTR[112+rbp]
+	mov	rax,QWORD[112+rbp]
 	adc	rdx,0
 	add	r13,r14
 	mov	r14,rdx
@@ -1490,58 +1491,58 @@
 	mul	rbx
 	mov	rbx,rsi
 	add	r15,rax
-	mov	rax,QWORD PTR[rbp]
+	mov	rax,QWORD[rbp]
 	adc	rdx,0
 	add	r14,r15
 	mov	r15,rdx
 	adc	r15,0
 
 	dec	ecx
-	jnz	$L$8x_reduce
+	jnz	NEAR $L$8x_reduce
 
-	lea	rbp,QWORD PTR[128+rbp]
+	lea	rbp,[128+rbp]
 	xor	rax,rax
-	mov	rdx,QWORD PTR[((8+8))+rsp]
-	cmp	rbp,QWORD PTR[((0+8))+rsp]
-	jae	$L$8x_no_tail
+	mov	rdx,QWORD[((8+8))+rsp]
+	cmp	rbp,QWORD[((0+8))+rsp]
+	jae	NEAR $L$8x_no_tail
 
-DB	066h
-	add	r8,QWORD PTR[rdi]
-	adc	r9,QWORD PTR[8+rdi]
-	adc	r10,QWORD PTR[16+rdi]
-	adc	r11,QWORD PTR[24+rdi]
-	adc	r12,QWORD PTR[32+rdi]
-	adc	r13,QWORD PTR[40+rdi]
-	adc	r14,QWORD PTR[48+rdi]
-	adc	r15,QWORD PTR[56+rdi]
+DB	0x66
+	add	r8,QWORD[rdi]
+	adc	r9,QWORD[8+rdi]
+	adc	r10,QWORD[16+rdi]
+	adc	r11,QWORD[24+rdi]
+	adc	r12,QWORD[32+rdi]
+	adc	r13,QWORD[40+rdi]
+	adc	r14,QWORD[48+rdi]
+	adc	r15,QWORD[56+rdi]
 	sbb	rsi,rsi
 
-	mov	rbx,QWORD PTR[((48+56+8))+rsp]
+	mov	rbx,QWORD[((48+56+8))+rsp]
 	mov	ecx,8
-	mov	rax,QWORD PTR[rbp]
-	jmp	$L$8x_tail
+	mov	rax,QWORD[rbp]
+	jmp	NEAR $L$8x_tail
 
 ALIGN	32
-$L$8x_tail::
+$L$8x_tail:
 	mul	rbx
 	add	r8,rax
-	mov	rax,QWORD PTR[16+rbp]
-	mov	QWORD PTR[rdi],r8
+	mov	rax,QWORD[16+rbp]
+	mov	QWORD[rdi],r8
 	mov	r8,rdx
 	adc	r8,0
 
 	mul	rbx
 	add	r9,rax
-	mov	rax,QWORD PTR[32+rbp]
+	mov	rax,QWORD[32+rbp]
 	adc	rdx,0
 	add	r8,r9
-	lea	rdi,QWORD PTR[8+rdi]
+	lea	rdi,[8+rdi]
 	mov	r9,rdx
 	adc	r9,0
 
 	mul	rbx
 	add	r10,rax
-	mov	rax,QWORD PTR[48+rbp]
+	mov	rax,QWORD[48+rbp]
 	adc	rdx,0
 	add	r9,r10
 	mov	r10,rdx
@@ -1549,7 +1550,7 @@
 
 	mul	rbx
 	add	r11,rax
-	mov	rax,QWORD PTR[64+rbp]
+	mov	rax,QWORD[64+rbp]
 	adc	rdx,0
 	add	r10,r11
 	mov	r11,rdx
@@ -1557,7 +1558,7 @@
 
 	mul	rbx
 	add	r12,rax
-	mov	rax,QWORD PTR[80+rbp]
+	mov	rax,QWORD[80+rbp]
 	adc	rdx,0
 	add	r11,r12
 	mov	r12,rdx
@@ -1565,7 +1566,7 @@
 
 	mul	rbx
 	add	r13,rax
-	mov	rax,QWORD PTR[96+rbp]
+	mov	rax,QWORD[96+rbp]
 	adc	rdx,0
 	add	r12,r13
 	mov	r13,rdx
@@ -1573,143 +1574,143 @@
 
 	mul	rbx
 	add	r14,rax
-	mov	rax,QWORD PTR[112+rbp]
+	mov	rax,QWORD[112+rbp]
 	adc	rdx,0
 	add	r13,r14
 	mov	r14,rdx
 	adc	r14,0
 
 	mul	rbx
-	mov	rbx,QWORD PTR[((48-16+8))+rcx*8+rsp]
+	mov	rbx,QWORD[((48-16+8))+rcx*8+rsp]
 	add	r15,rax
 	adc	rdx,0
 	add	r14,r15
-	mov	rax,QWORD PTR[rbp]
+	mov	rax,QWORD[rbp]
 	mov	r15,rdx
 	adc	r15,0
 
 	dec	ecx
-	jnz	$L$8x_tail
+	jnz	NEAR $L$8x_tail
 
-	lea	rbp,QWORD PTR[128+rbp]
-	mov	rdx,QWORD PTR[((8+8))+rsp]
-	cmp	rbp,QWORD PTR[((0+8))+rsp]
-	jae	$L$8x_tail_done
+	lea	rbp,[128+rbp]
+	mov	rdx,QWORD[((8+8))+rsp]
+	cmp	rbp,QWORD[((0+8))+rsp]
+	jae	NEAR $L$8x_tail_done
 
-	mov	rbx,QWORD PTR[((48+56+8))+rsp]
+	mov	rbx,QWORD[((48+56+8))+rsp]
 	neg	rsi
-	mov	rax,QWORD PTR[rbp]
-	adc	r8,QWORD PTR[rdi]
-	adc	r9,QWORD PTR[8+rdi]
-	adc	r10,QWORD PTR[16+rdi]
-	adc	r11,QWORD PTR[24+rdi]
-	adc	r12,QWORD PTR[32+rdi]
-	adc	r13,QWORD PTR[40+rdi]
-	adc	r14,QWORD PTR[48+rdi]
-	adc	r15,QWORD PTR[56+rdi]
+	mov	rax,QWORD[rbp]
+	adc	r8,QWORD[rdi]
+	adc	r9,QWORD[8+rdi]
+	adc	r10,QWORD[16+rdi]
+	adc	r11,QWORD[24+rdi]
+	adc	r12,QWORD[32+rdi]
+	adc	r13,QWORD[40+rdi]
+	adc	r14,QWORD[48+rdi]
+	adc	r15,QWORD[56+rdi]
 	sbb	rsi,rsi
 
 	mov	ecx,8
-	jmp	$L$8x_tail
+	jmp	NEAR $L$8x_tail
 
 ALIGN	32
-$L$8x_tail_done::
-	add	r8,QWORD PTR[rdx]
+$L$8x_tail_done:
+	add	r8,QWORD[rdx]
 	xor	rax,rax
 
 	neg	rsi
-$L$8x_no_tail::
-	adc	r8,QWORD PTR[rdi]
-	adc	r9,QWORD PTR[8+rdi]
-	adc	r10,QWORD PTR[16+rdi]
-	adc	r11,QWORD PTR[24+rdi]
-	adc	r12,QWORD PTR[32+rdi]
-	adc	r13,QWORD PTR[40+rdi]
-	adc	r14,QWORD PTR[48+rdi]
-	adc	r15,QWORD PTR[56+rdi]
+$L$8x_no_tail:
+	adc	r8,QWORD[rdi]
+	adc	r9,QWORD[8+rdi]
+	adc	r10,QWORD[16+rdi]
+	adc	r11,QWORD[24+rdi]
+	adc	r12,QWORD[32+rdi]
+	adc	r13,QWORD[40+rdi]
+	adc	r14,QWORD[48+rdi]
+	adc	r15,QWORD[56+rdi]
 	adc	rax,0
-	mov	rcx,QWORD PTR[((-16))+rbp]
+	mov	rcx,QWORD[((-16))+rbp]
 	xor	rsi,rsi
 
 DB	102,72,15,126,213
 
-	mov	QWORD PTR[rdi],r8
-	mov	QWORD PTR[8+rdi],r9
+	mov	QWORD[rdi],r8
+	mov	QWORD[8+rdi],r9
 DB	102,73,15,126,217
-	mov	QWORD PTR[16+rdi],r10
-	mov	QWORD PTR[24+rdi],r11
-	mov	QWORD PTR[32+rdi],r12
-	mov	QWORD PTR[40+rdi],r13
-	mov	QWORD PTR[48+rdi],r14
-	mov	QWORD PTR[56+rdi],r15
-	lea	rdi,QWORD PTR[64+rdi]
+	mov	QWORD[16+rdi],r10
+	mov	QWORD[24+rdi],r11
+	mov	QWORD[32+rdi],r12
+	mov	QWORD[40+rdi],r13
+	mov	QWORD[48+rdi],r14
+	mov	QWORD[56+rdi],r15
+	lea	rdi,[64+rdi]
 
 	cmp	rdi,rdx
-	jb	$L$8x_reduction_loop
+	jb	NEAR $L$8x_reduction_loop
 
 	sub	rcx,r15
-	lea	rbx,QWORD PTR[r9*1+rdi]
+	lea	rbx,[r9*1+rdi]
 	adc	rsi,rsi
 	mov	rcx,r9
 	or	rax,rsi
 DB	102,72,15,126,207
 	xor	rax,1
 DB	102,72,15,126,206
-	lea	rbp,QWORD PTR[rax*8+rbp]
+	lea	rbp,[rax*8+rbp]
 	sar	rcx,3+2
-	jmp	$L$sqr4x_sub
+	jmp	NEAR $L$sqr4x_sub
 
 ALIGN	32
-$L$sqr4x_sub::
-DB	066h
-	mov	r12,QWORD PTR[rbx]
-	mov	r13,QWORD PTR[8+rbx]
-	sbb	r12,QWORD PTR[rbp]
-	mov	r14,QWORD PTR[16+rbx]
-	sbb	r13,QWORD PTR[16+rbp]
-	mov	r15,QWORD PTR[24+rbx]
-	lea	rbx,QWORD PTR[32+rbx]
-	sbb	r14,QWORD PTR[32+rbp]
-	mov	QWORD PTR[rdi],r12
-	sbb	r15,QWORD PTR[48+rbp]
-	lea	rbp,QWORD PTR[64+rbp]
-	mov	QWORD PTR[8+rdi],r13
-	mov	QWORD PTR[16+rdi],r14
-	mov	QWORD PTR[24+rdi],r15
-	lea	rdi,QWORD PTR[32+rdi]
+$L$sqr4x_sub:
+DB	0x66
+	mov	r12,QWORD[rbx]
+	mov	r13,QWORD[8+rbx]
+	sbb	r12,QWORD[rbp]
+	mov	r14,QWORD[16+rbx]
+	sbb	r13,QWORD[16+rbp]
+	mov	r15,QWORD[24+rbx]
+	lea	rbx,[32+rbx]
+	sbb	r14,QWORD[32+rbp]
+	mov	QWORD[rdi],r12
+	sbb	r15,QWORD[48+rbp]
+	lea	rbp,[64+rbp]
+	mov	QWORD[8+rdi],r13
+	mov	QWORD[16+rdi],r14
+	mov	QWORD[24+rdi],r15
+	lea	rdi,[32+rdi]
 
 	inc	rcx
-	jnz	$L$sqr4x_sub
+	jnz	NEAR $L$sqr4x_sub
 	mov	r10,r9
 	neg	r9
 	DB	0F3h,0C3h		;repret
-bn_sqr8x_internal	ENDP
-PUBLIC	bn_from_montgomery
+
+global	bn_from_montgomery
 
 ALIGN	32
-bn_from_montgomery	PROC PUBLIC
-	test	DWORD PTR[48+rsp],7
-	jz	bn_from_mont8x
+bn_from_montgomery:
+	test	DWORD[48+rsp],7
+	jz	NEAR bn_from_mont8x
 	xor	eax,eax
 	DB	0F3h,0C3h		;repret
-bn_from_montgomery	ENDP
+
 
 
 ALIGN	32
-bn_from_mont8x	PROC PRIVATE
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+bn_from_mont8x:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_bn_from_mont8x::
+$L$SEH_begin_bn_from_mont8x:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
-DB	067h
+DB	0x67
 	mov	rax,rsp
 	push	rbx
 	push	rbp
@@ -1717,15 +1718,15 @@
 	push	r13
 	push	r14
 	push	r15
-	lea	rsp,QWORD PTR[((-40))+rsp]
-	movaps	XMMWORD PTR[rsp],xmm6
-	movaps	XMMWORD PTR[16+rsp],xmm7
-DB	067h
+	lea	rsp,[((-40))+rsp]
+	movaps	XMMWORD[rsp],xmm6
+	movaps	XMMWORD[16+rsp],xmm7
+DB	0x67
 	mov	r10d,r9d
 	shl	r9d,3
 	shl	r10d,3+2
 	neg	r9
-	mov	r8,QWORD PTR[r8]
+	mov	r8,QWORD[r8]
 
 
 
@@ -1733,24 +1734,24 @@
 
 
 
-	lea	r11,QWORD PTR[((-64))+r9*2+rsp]
+	lea	r11,[((-64))+r9*2+rsp]
 	sub	r11,rsi
 	and	r11,4095
 	cmp	r10,r11
-	jb	$L$from_sp_alt
+	jb	NEAR $L$from_sp_alt
 	sub	rsp,r11
-	lea	rsp,QWORD PTR[((-64))+r9*2+rsp]
-	jmp	$L$from_sp_done
+	lea	rsp,[((-64))+r9*2+rsp]
+	jmp	NEAR $L$from_sp_done
 
 ALIGN	32
-$L$from_sp_alt::
-	lea	r10,QWORD PTR[((4096-64))+r9*2]
-	lea	rsp,QWORD PTR[((-64))+r9*2+rsp]
+$L$from_sp_alt:
+	lea	r10,[((4096-64))+r9*2]
+	lea	rsp,[((-64))+r9*2+rsp]
 	sub	r11,r10
 	mov	r10,0
 	cmovc	r11,r10
 	sub	rsp,r11
-$L$from_sp_done::
+$L$from_sp_done:
 	and	rsp,-64
 	mov	r10,r9
 	neg	r9
@@ -1764,136 +1765,135 @@
 
 
 
-	mov	QWORD PTR[32+rsp],r8
-	mov	QWORD PTR[40+rsp],rax
-$L$from_body::
+	mov	QWORD[32+rsp],r8
+	mov	QWORD[40+rsp],rax
+$L$from_body:
 	mov	r11,r9
-	lea	rax,QWORD PTR[48+rsp]
+	lea	rax,[48+rsp]
 	pxor	xmm0,xmm0
-	jmp	$L$mul_by_1
+	jmp	NEAR $L$mul_by_1
 
 ALIGN	32
-$L$mul_by_1::
-	movdqu	xmm1,XMMWORD PTR[rsi]
-	movdqu	xmm2,XMMWORD PTR[16+rsi]
-	movdqu	xmm3,XMMWORD PTR[32+rsi]
-	movdqa	XMMWORD PTR[r9*1+rax],xmm0
-	movdqu	xmm4,XMMWORD PTR[48+rsi]
-	movdqa	XMMWORD PTR[16+r9*1+rax],xmm0
-DB	048h,08dh,0b6h,040h,000h,000h,000h
-	movdqa	XMMWORD PTR[rax],xmm1
-	movdqa	XMMWORD PTR[32+r9*1+rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm2
-	movdqa	XMMWORD PTR[48+r9*1+rax],xmm0
-	movdqa	XMMWORD PTR[32+rax],xmm3
-	movdqa	XMMWORD PTR[48+rax],xmm4
-	lea	rax,QWORD PTR[64+rax]
+$L$mul_by_1:
+	movdqu	xmm1,XMMWORD[rsi]
+	movdqu	xmm2,XMMWORD[16+rsi]
+	movdqu	xmm3,XMMWORD[32+rsi]
+	movdqa	XMMWORD[r9*1+rax],xmm0
+	movdqu	xmm4,XMMWORD[48+rsi]
+	movdqa	XMMWORD[16+r9*1+rax],xmm0
+DB	0x48,0x8d,0xb6,0x40,0x00,0x00,0x00
+	movdqa	XMMWORD[rax],xmm1
+	movdqa	XMMWORD[32+r9*1+rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm2
+	movdqa	XMMWORD[48+r9*1+rax],xmm0
+	movdqa	XMMWORD[32+rax],xmm3
+	movdqa	XMMWORD[48+rax],xmm4
+	lea	rax,[64+rax]
 	sub	r11,64
-	jnz	$L$mul_by_1
+	jnz	NEAR $L$mul_by_1
 
 DB	102,72,15,110,207
 DB	102,72,15,110,209
-DB	067h
+DB	0x67
 	mov	rbp,rcx
 DB	102,73,15,110,218
 	call	sqr8x_reduction
 
 	pxor	xmm0,xmm0
-	lea	rax,QWORD PTR[48+rsp]
-	mov	rsi,QWORD PTR[40+rsp]
-	jmp	$L$from_mont_zero
+	lea	rax,[48+rsp]
+	mov	rsi,QWORD[40+rsp]
+	jmp	NEAR $L$from_mont_zero
 
 ALIGN	32
-$L$from_mont_zero::
-	movdqa	XMMWORD PTR[rax],xmm0
-	movdqa	XMMWORD PTR[16+rax],xmm0
-	movdqa	XMMWORD PTR[32+rax],xmm0
-	movdqa	XMMWORD PTR[48+rax],xmm0
-	lea	rax,QWORD PTR[64+rax]
+$L$from_mont_zero:
+	movdqa	XMMWORD[rax],xmm0
+	movdqa	XMMWORD[16+rax],xmm0
+	movdqa	XMMWORD[32+rax],xmm0
+	movdqa	XMMWORD[48+rax],xmm0
+	lea	rax,[64+rax]
 	sub	r9,32
-	jnz	$L$from_mont_zero
+	jnz	NEAR $L$from_mont_zero
 
 	mov	rax,1
-	mov	r15,QWORD PTR[((-48))+rsi]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$from_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[((-48))+rsi]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$from_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_from_mont8x::
-bn_from_mont8x	ENDP
-PUBLIC	bn_scatter5
+$L$SEH_end_bn_from_mont8x:
+global	bn_scatter5
 
 ALIGN	16
-bn_scatter5	PROC PUBLIC
+bn_scatter5:
 	cmp	edx,0
-	jz	$L$scatter_epilogue
-	lea	r8,QWORD PTR[r9*8+r8]
-$L$scatter::
-	mov	rax,QWORD PTR[rcx]
-	lea	rcx,QWORD PTR[8+rcx]
-	mov	QWORD PTR[r8],rax
-	lea	r8,QWORD PTR[256+r8]
+	jz	NEAR $L$scatter_epilogue
+	lea	r8,[r9*8+r8]
+$L$scatter:
+	mov	rax,QWORD[rcx]
+	lea	rcx,[8+rcx]
+	mov	QWORD[r8],rax
+	lea	r8,[256+r8]
 	sub	edx,1
-	jnz	$L$scatter
-$L$scatter_epilogue::
+	jnz	NEAR $L$scatter
+$L$scatter_epilogue:
 	DB	0F3h,0C3h		;repret
-bn_scatter5	ENDP
 
-PUBLIC	bn_gather5
+
+global	bn_gather5
 
 ALIGN	16
-bn_gather5	PROC PUBLIC
-$L$SEH_begin_bn_gather5::
+bn_gather5:
+$L$SEH_begin_bn_gather5:
 
-DB	048h,083h,0ech,028h
-DB	00fh,029h,034h,024h
-DB	00fh,029h,07ch,024h,010h
+DB	0x48,0x83,0xec,0x28
+DB	0x0f,0x29,0x34,0x24
+DB	0x0f,0x29,0x7c,0x24,0x10
 	mov	r11d,r9d
 	shr	r9d,3
 	and	r11,7
 	not	r9d
-	lea	rax,QWORD PTR[$L$magic_masks]
+	lea	rax,[$L$magic_masks]
 	and	r9d,3
-	lea	r8,QWORD PTR[128+r11*8+r8]
-	movq	xmm4,QWORD PTR[r9*8+rax]
-	movq	xmm5,QWORD PTR[8+r9*8+rax]
-	movq	xmm6,QWORD PTR[16+r9*8+rax]
-	movq	xmm7,QWORD PTR[24+r9*8+rax]
-	jmp	$L$gather
+	lea	r8,[128+r11*8+r8]
+	movq	xmm4,QWORD[r9*8+rax]
+	movq	xmm5,QWORD[8+r9*8+rax]
+	movq	xmm6,QWORD[16+r9*8+rax]
+	movq	xmm7,QWORD[24+r9*8+rax]
+	jmp	NEAR $L$gather
 ALIGN	16
-$L$gather::
-	movq	xmm0,QWORD PTR[(((-128)))+r8]
-	movq	xmm1,QWORD PTR[((-64))+r8]
+$L$gather:
+	movq	xmm0,QWORD[(((-128)))+r8]
+	movq	xmm1,QWORD[((-64))+r8]
 	pand	xmm0,xmm4
-	movq	xmm2,QWORD PTR[r8]
+	movq	xmm2,QWORD[r8]
 	pand	xmm1,xmm5
-	movq	xmm3,QWORD PTR[64+r8]
+	movq	xmm3,QWORD[64+r8]
 	pand	xmm2,xmm6
 	por	xmm0,xmm1
 	pand	xmm3,xmm7
-DB	067h,067h
+DB	0x67,0x67
 	por	xmm0,xmm2
-	lea	r8,QWORD PTR[256+r8]
+	lea	r8,[256+r8]
 	por	xmm0,xmm3
 
-	movq	QWORD PTR[rcx],xmm0
-	lea	rcx,QWORD PTR[8+rcx]
+	movq	QWORD[rcx],xmm0
+	lea	rcx,[8+rcx]
 	sub	edx,1
-	jnz	$L$gather
-	movaps	xmm6,XMMWORD PTR[rsp]
-	movaps	xmm7,XMMWORD PTR[16+rsp]
-	lea	rsp,QWORD PTR[40+rsp]
+	jnz	NEAR $L$gather
+	movaps	xmm6,XMMWORD[rsp]
+	movaps	xmm7,XMMWORD[16+rsp]
+	lea	rsp,[40+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_bn_gather5::
-bn_gather5	ENDP
+$L$SEH_end_bn_gather5:
+
 ALIGN	64
-$L$magic_masks::
+$L$magic_masks:
 	DD	0,0,0,0,0,0,-1,-1
 	DD	0,0,0,0,0,0,0,0
 DB	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
@@ -1902,10 +1902,10 @@
 DB	114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79
 DB	71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111
 DB	112,101,110,115,115,108,46,111,114,103,62,0
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-mul_handler	PROC PRIVATE
+mul_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1917,79 +1917,79 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	lea	r10,QWORD PTR[$L$mul_epilogue]
+	lea	r10,[$L$mul_epilogue]
 	cmp	rbx,r10
-	jb	$L$body_40
+	jb	NEAR $L$body_40
 
-	mov	r10,QWORD PTR[192+r8]
-	mov	rax,QWORD PTR[8+r10*8+rax]
-	jmp	$L$body_proceed
+	mov	r10,QWORD[192+r8]
+	mov	rax,QWORD[8+r10*8+rax]
+	jmp	NEAR $L$body_proceed
 
-$L$body_40::
-	mov	rax,QWORD PTR[40+rax]
-$L$body_proceed::
+$L$body_40:
+	mov	rax,QWORD[40+rax]
+$L$body_proceed:
 
-	movaps	xmm0,XMMWORD PTR[((-88))+rax]
-	movaps	xmm1,XMMWORD PTR[((-72))+rax]
+	movaps	xmm0,XMMWORD[((-88))+rax]
+	movaps	xmm1,XMMWORD[((-72))+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
-	movups	XMMWORD PTR[512+r8],xmm0
-	movups	XMMWORD PTR[528+r8],xmm1
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
+	movups	XMMWORD[512+r8],xmm0
+	movups	XMMWORD[528+r8],xmm1
 
-$L$common_seh_tail::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$common_seh_tail:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -2003,59 +2003,54 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-mul_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_bn_mul_mont_gather5
-	DD	imagerel $L$SEH_end_bn_mul_mont_gather5
-	DD	imagerel $L$SEH_info_bn_mul_mont_gather5
+	DD	$L$SEH_begin_bn_mul_mont_gather5 wrt ..imagebase
+	DD	$L$SEH_end_bn_mul_mont_gather5 wrt ..imagebase
+	DD	$L$SEH_info_bn_mul_mont_gather5 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_bn_mul4x_mont_gather5
-	DD	imagerel $L$SEH_end_bn_mul4x_mont_gather5
-	DD	imagerel $L$SEH_info_bn_mul4x_mont_gather5
+	DD	$L$SEH_begin_bn_mul4x_mont_gather5 wrt ..imagebase
+	DD	$L$SEH_end_bn_mul4x_mont_gather5 wrt ..imagebase
+	DD	$L$SEH_info_bn_mul4x_mont_gather5 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_bn_power5
-	DD	imagerel $L$SEH_end_bn_power5
-	DD	imagerel $L$SEH_info_bn_power5
+	DD	$L$SEH_begin_bn_power5 wrt ..imagebase
+	DD	$L$SEH_end_bn_power5 wrt ..imagebase
+	DD	$L$SEH_info_bn_power5 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_bn_from_mont8x
-	DD	imagerel $L$SEH_end_bn_from_mont8x
-	DD	imagerel $L$SEH_info_bn_from_mont8x
-	DD	imagerel $L$SEH_begin_bn_gather5
-	DD	imagerel $L$SEH_end_bn_gather5
-	DD	imagerel $L$SEH_info_bn_gather5
+	DD	$L$SEH_begin_bn_from_mont8x wrt ..imagebase
+	DD	$L$SEH_end_bn_from_mont8x wrt ..imagebase
+	DD	$L$SEH_info_bn_from_mont8x wrt ..imagebase
+	DD	$L$SEH_begin_bn_gather5 wrt ..imagebase
+	DD	$L$SEH_end_bn_gather5 wrt ..imagebase
+	DD	$L$SEH_info_bn_gather5 wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_bn_mul_mont_gather5::
+$L$SEH_info_bn_mul_mont_gather5:
 DB	9,0,0,0
-	DD	imagerel mul_handler
-	DD	imagerel $L$mul_body,imagerel $L$mul_epilogue
+	DD	mul_handler wrt ..imagebase
+	DD	$L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase
 ALIGN	8
-$L$SEH_info_bn_mul4x_mont_gather5::
+$L$SEH_info_bn_mul4x_mont_gather5:
 DB	9,0,0,0
-	DD	imagerel mul_handler
-	DD	imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue
+	DD	mul_handler wrt ..imagebase
+	DD	$L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase
 ALIGN	8
-$L$SEH_info_bn_power5::
+$L$SEH_info_bn_power5:
 DB	9,0,0,0
-	DD	imagerel mul_handler
-	DD	imagerel $L$power5_body,imagerel $L$power5_epilogue
+	DD	mul_handler wrt ..imagebase
+	DD	$L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebase
 ALIGN	8
-$L$SEH_info_bn_from_mont8x::
+$L$SEH_info_bn_from_mont8x:
 DB	9,0,0,0
-	DD	imagerel mul_handler
-	DD	imagerel $L$from_body,imagerel $L$from_epilogue
+	DD	mul_handler wrt ..imagebase
+	DD	$L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase
 ALIGN	8
-$L$SEH_info_bn_gather5::
-DB	001h,00dh,005h,000h
-DB	00dh,078h,001h,000h
-DB	008h,068h,000h,000h
-DB	004h,042h,000h,000h
+$L$SEH_info_bn_gather5:
+DB	0x01,0x0d,0x05,0x00
+DB	0x0d,0x78,0x01,0x00
+DB	0x08,0x68,0x00,0x00
+DB	0x04,0x42,0x00,0x00
 ALIGN	8
-
-.xdata	ENDS
-END
diff --git a/third_party/boringssl/win-x86_64/crypto/cpu-x86_64-asm.asm b/third_party/boringssl/win-x86_64/crypto/cpu-x86_64-asm.asm
index dca66f5..a52e68b 100644
--- a/third_party/boringssl/win-x86_64/crypto/cpu-x86_64-asm.asm
+++ b/third_party/boringssl/win-x86_64/crypto/cpu-x86_64-asm.asm
@@ -1,14 +1,18 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-PUBLIC	OPENSSL_ia32_cpuid
+
+global	OPENSSL_ia32_cpuid
 
 ALIGN	16
-OPENSSL_ia32_cpuid	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+OPENSSL_ia32_cpuid:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_OPENSSL_ia32_cpuid::
+$L$SEH_begin_OPENSSL_ia32_cpuid:
 	mov	rdi,rcx
 
 
@@ -18,54 +22,54 @@
 	mov	r8,rbx
 
 	xor	eax,eax
-	mov	DWORD PTR[8+rdi],eax
+	mov	DWORD[8+rdi],eax
 	cpuid
 	mov	r11d,eax
 
 	xor	eax,eax
-	cmp	ebx,0756e6547h
+	cmp	ebx,0x756e6547
 	setne	al
 	mov	r9d,eax
-	cmp	edx,049656e69h
+	cmp	edx,0x49656e69
 	setne	al
 	or	r9d,eax
-	cmp	ecx,06c65746eh
+	cmp	ecx,0x6c65746e
 	setne	al
 	or	r9d,eax
-	jz	$L$intel
+	jz	NEAR $L$intel
 
-	cmp	ebx,068747541h
+	cmp	ebx,0x68747541
 	setne	al
 	mov	r10d,eax
-	cmp	edx,069746E65h
+	cmp	edx,0x69746E65
 	setne	al
 	or	r10d,eax
-	cmp	ecx,0444D4163h
+	cmp	ecx,0x444D4163
 	setne	al
 	or	r10d,eax
-	jnz	$L$intel
+	jnz	NEAR $L$intel
 
 
 
 
-	mov	eax,080000000h
+	mov	eax,0x80000000
 	cpuid
 
 
-	cmp	eax,080000001h
-	jb	$L$intel
+	cmp	eax,0x80000001
+	jb	NEAR $L$intel
 	mov	r10d,eax
-	mov	eax,080000001h
+	mov	eax,0x80000001
 	cpuid
 
 
 	or	r9d,ecx
-	and	r9d,000000801h
+	and	r9d,0x00000801
 
-	cmp	r10d,080000008h
-	jb	$L$intel
+	cmp	r10d,0x80000008
+	jb	NEAR $L$intel
 
-	mov	eax,080000008h
+	mov	eax,0x80000008
 	cpuid
 
 	movzx	r10,cl
@@ -75,84 +79,80 @@
 	cpuid
 
 	bt	edx,28
-	jnc	$L$generic
+	jnc	NEAR $L$generic
 	shr	ebx,16
 	cmp	bl,r10b
-	ja	$L$generic
-	and	edx,0efffffffh
-	jmp	$L$generic
+	ja	NEAR $L$generic
+	and	edx,0xefffffff
+	jmp	NEAR $L$generic
 
-$L$intel::
+$L$intel:
 	cmp	r11d,4
 	mov	r10d,-1
-	jb	$L$nocacheinfo
+	jb	NEAR $L$nocacheinfo
 
 	mov	eax,4
 	mov	ecx,0
 	cpuid
 	mov	r10d,eax
 	shr	r10d,14
-	and	r10d,0fffh
+	and	r10d,0xfff
 
 	cmp	r11d,7
-	jb	$L$nocacheinfo
+	jb	NEAR $L$nocacheinfo
 
 	mov	eax,7
 	xor	ecx,ecx
 	cpuid
-	mov	DWORD PTR[8+rdi],ebx
+	mov	DWORD[8+rdi],ebx
 
-$L$nocacheinfo::
+$L$nocacheinfo:
 	mov	eax,1
 	cpuid
 
-	and	edx,0bfefffffh
+	and	edx,0xbfefffff
 	cmp	r9d,0
-	jne	$L$notintel
-	or	edx,040000000h
+	jne	NEAR $L$notintel
+	or	edx,0x40000000
 	and	ah,15
 	cmp	ah,15
-	jne	$L$notintel
-	or	edx,000100000h
-$L$notintel::
+	jne	NEAR $L$notintel
+	or	edx,0x00100000
+$L$notintel:
 	bt	edx,28
-	jnc	$L$generic
-	and	edx,0efffffffh
+	jnc	NEAR $L$generic
+	and	edx,0xefffffff
 	cmp	r10d,0
-	je	$L$generic
+	je	NEAR $L$generic
 
-	or	edx,010000000h
+	or	edx,0x10000000
 	shr	ebx,16
 	cmp	bl,1
-	ja	$L$generic
-	and	edx,0efffffffh
-$L$generic::
-	and	r9d,000000800h
-	and	ecx,0fffff7ffh
+	ja	NEAR $L$generic
+	and	edx,0xefffffff
+$L$generic:
+	and	r9d,0x00000800
+	and	ecx,0xfffff7ff
 	or	r9d,ecx
 
 	mov	r10d,edx
 	bt	r9d,27
-	jnc	$L$clear_avx
+	jnc	NEAR $L$clear_avx
 	xor	ecx,ecx
-DB	00fh,001h,0d0h
+DB	0x0f,0x01,0xd0
 	and	eax,6
 	cmp	eax,6
-	je	$L$done
-$L$clear_avx::
-	mov	eax,0efffe7ffh
+	je	NEAR $L$done
+$L$clear_avx:
+	mov	eax,0xefffe7ff
 	and	r9d,eax
-	and	DWORD PTR[8+rdi],0ffffffdfh
-$L$done::
-	mov	DWORD PTR[4+rdi],r9d
-	mov	DWORD PTR[rdi],r10d
+	and	DWORD[8+rdi],0xffffffdf
+$L$done:
+	mov	DWORD[4+rdi],r9d
+	mov	DWORD[rdi],r10d
 	mov	rbx,r8
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_OPENSSL_ia32_cpuid::
-OPENSSL_ia32_cpuid	ENDP
+$L$SEH_end_OPENSSL_ia32_cpuid:
 
-
-.text$	ENDS
-END
diff --git a/third_party/boringssl/win-x86_64/crypto/md5/md5-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/md5/md5-x86_64.asm
index d2faa88..0e9d2c6 100644
--- a/third_party/boringssl/win-x86_64/crypto/md5/md5-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/md5/md5-x86_64.asm
@@ -1,14 +1,18 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
+
 ALIGN	16
 
-PUBLIC	md5_block_asm_data_order
+global	md5_block_asm_data_order
 
-md5_block_asm_data_order	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+md5_block_asm_data_order:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_md5_block_asm_data_order::
+$L$SEH_begin_md5_block_asm_data_order:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -19,18 +23,18 @@
 	push	r12
 	push	r14
 	push	r15
-$L$prologue::
+$L$prologue:
 
 
 
 
 	mov	rbp,rdi
 	shl	rdx,6
-	lea	rdi,QWORD PTR[rdx*1+rsi]
-	mov	eax,DWORD PTR[rbp]
-	mov	ebx,DWORD PTR[4+rbp]
-	mov	ecx,DWORD PTR[8+rbp]
-	mov	edx,DWORD PTR[12+rbp]
+	lea	rdi,[rdx*1+rsi]
+	mov	eax,DWORD[rbp]
+	mov	ebx,DWORD[4+rbp]
+	mov	ecx,DWORD[8+rbp]
+	mov	edx,DWORD[12+rbp]
 
 
 
@@ -39,168 +43,168 @@
 
 
 	cmp	rsi,rdi
-	je	$L$end
+	je	NEAR $L$end
 
 
-$L$loop::
+$L$loop:
 	mov	r8d,eax
 	mov	r9d,ebx
 	mov	r14d,ecx
 	mov	r15d,edx
-	mov	r10d,DWORD PTR[rsi]
+	mov	r10d,DWORD[rsi]
 	mov	r11d,edx
 	xor	r11d,ecx
-	lea	eax,DWORD PTR[((-680876936))+r10*1+rax]
+	lea	eax,[((-680876936))+r10*1+rax]
 	and	r11d,ebx
 	xor	r11d,edx
-	mov	r10d,DWORD PTR[4+rsi]
+	mov	r10d,DWORD[4+rsi]
 	add	eax,r11d
 	rol	eax,7
 	mov	r11d,ecx
 	add	eax,ebx
 	xor	r11d,ebx
-	lea	edx,DWORD PTR[((-389564586))+r10*1+rdx]
+	lea	edx,[((-389564586))+r10*1+rdx]
 	and	r11d,eax
 	xor	r11d,ecx
-	mov	r10d,DWORD PTR[8+rsi]
+	mov	r10d,DWORD[8+rsi]
 	add	edx,r11d
 	rol	edx,12
 	mov	r11d,ebx
 	add	edx,eax
 	xor	r11d,eax
-	lea	ecx,DWORD PTR[606105819+r10*1+rcx]
+	lea	ecx,[606105819+r10*1+rcx]
 	and	r11d,edx
 	xor	r11d,ebx
-	mov	r10d,DWORD PTR[12+rsi]
+	mov	r10d,DWORD[12+rsi]
 	add	ecx,r11d
 	rol	ecx,17
 	mov	r11d,eax
 	add	ecx,edx
 	xor	r11d,edx
-	lea	ebx,DWORD PTR[((-1044525330))+r10*1+rbx]
+	lea	ebx,[((-1044525330))+r10*1+rbx]
 	and	r11d,ecx
 	xor	r11d,eax
-	mov	r10d,DWORD PTR[16+rsi]
+	mov	r10d,DWORD[16+rsi]
 	add	ebx,r11d
 	rol	ebx,22
 	mov	r11d,edx
 	add	ebx,ecx
 	xor	r11d,ecx
-	lea	eax,DWORD PTR[((-176418897))+r10*1+rax]
+	lea	eax,[((-176418897))+r10*1+rax]
 	and	r11d,ebx
 	xor	r11d,edx
-	mov	r10d,DWORD PTR[20+rsi]
+	mov	r10d,DWORD[20+rsi]
 	add	eax,r11d
 	rol	eax,7
 	mov	r11d,ecx
 	add	eax,ebx
 	xor	r11d,ebx
-	lea	edx,DWORD PTR[1200080426+r10*1+rdx]
+	lea	edx,[1200080426+r10*1+rdx]
 	and	r11d,eax
 	xor	r11d,ecx
-	mov	r10d,DWORD PTR[24+rsi]
+	mov	r10d,DWORD[24+rsi]
 	add	edx,r11d
 	rol	edx,12
 	mov	r11d,ebx
 	add	edx,eax
 	xor	r11d,eax
-	lea	ecx,DWORD PTR[((-1473231341))+r10*1+rcx]
+	lea	ecx,[((-1473231341))+r10*1+rcx]
 	and	r11d,edx
 	xor	r11d,ebx
-	mov	r10d,DWORD PTR[28+rsi]
+	mov	r10d,DWORD[28+rsi]
 	add	ecx,r11d
 	rol	ecx,17
 	mov	r11d,eax
 	add	ecx,edx
 	xor	r11d,edx
-	lea	ebx,DWORD PTR[((-45705983))+r10*1+rbx]
+	lea	ebx,[((-45705983))+r10*1+rbx]
 	and	r11d,ecx
 	xor	r11d,eax
-	mov	r10d,DWORD PTR[32+rsi]
+	mov	r10d,DWORD[32+rsi]
 	add	ebx,r11d
 	rol	ebx,22
 	mov	r11d,edx
 	add	ebx,ecx
 	xor	r11d,ecx
-	lea	eax,DWORD PTR[1770035416+r10*1+rax]
+	lea	eax,[1770035416+r10*1+rax]
 	and	r11d,ebx
 	xor	r11d,edx
-	mov	r10d,DWORD PTR[36+rsi]
+	mov	r10d,DWORD[36+rsi]
 	add	eax,r11d
 	rol	eax,7
 	mov	r11d,ecx
 	add	eax,ebx
 	xor	r11d,ebx
-	lea	edx,DWORD PTR[((-1958414417))+r10*1+rdx]
+	lea	edx,[((-1958414417))+r10*1+rdx]
 	and	r11d,eax
 	xor	r11d,ecx
-	mov	r10d,DWORD PTR[40+rsi]
+	mov	r10d,DWORD[40+rsi]
 	add	edx,r11d
 	rol	edx,12
 	mov	r11d,ebx
 	add	edx,eax
 	xor	r11d,eax
-	lea	ecx,DWORD PTR[((-42063))+r10*1+rcx]
+	lea	ecx,[((-42063))+r10*1+rcx]
 	and	r11d,edx
 	xor	r11d,ebx
-	mov	r10d,DWORD PTR[44+rsi]
+	mov	r10d,DWORD[44+rsi]
 	add	ecx,r11d
 	rol	ecx,17
 	mov	r11d,eax
 	add	ecx,edx
 	xor	r11d,edx
-	lea	ebx,DWORD PTR[((-1990404162))+r10*1+rbx]
+	lea	ebx,[((-1990404162))+r10*1+rbx]
 	and	r11d,ecx
 	xor	r11d,eax
-	mov	r10d,DWORD PTR[48+rsi]
+	mov	r10d,DWORD[48+rsi]
 	add	ebx,r11d
 	rol	ebx,22
 	mov	r11d,edx
 	add	ebx,ecx
 	xor	r11d,ecx
-	lea	eax,DWORD PTR[1804603682+r10*1+rax]
+	lea	eax,[1804603682+r10*1+rax]
 	and	r11d,ebx
 	xor	r11d,edx
-	mov	r10d,DWORD PTR[52+rsi]
+	mov	r10d,DWORD[52+rsi]
 	add	eax,r11d
 	rol	eax,7
 	mov	r11d,ecx
 	add	eax,ebx
 	xor	r11d,ebx
-	lea	edx,DWORD PTR[((-40341101))+r10*1+rdx]
+	lea	edx,[((-40341101))+r10*1+rdx]
 	and	r11d,eax
 	xor	r11d,ecx
-	mov	r10d,DWORD PTR[56+rsi]
+	mov	r10d,DWORD[56+rsi]
 	add	edx,r11d
 	rol	edx,12
 	mov	r11d,ebx
 	add	edx,eax
 	xor	r11d,eax
-	lea	ecx,DWORD PTR[((-1502002290))+r10*1+rcx]
+	lea	ecx,[((-1502002290))+r10*1+rcx]
 	and	r11d,edx
 	xor	r11d,ebx
-	mov	r10d,DWORD PTR[60+rsi]
+	mov	r10d,DWORD[60+rsi]
 	add	ecx,r11d
 	rol	ecx,17
 	mov	r11d,eax
 	add	ecx,edx
 	xor	r11d,edx
-	lea	ebx,DWORD PTR[1236535329+r10*1+rbx]
+	lea	ebx,[1236535329+r10*1+rbx]
 	and	r11d,ecx
 	xor	r11d,eax
-	mov	r10d,DWORD PTR[rsi]
+	mov	r10d,DWORD[rsi]
 	add	ebx,r11d
 	rol	ebx,22
 	mov	r11d,edx
 	add	ebx,ecx
-	mov	r10d,DWORD PTR[4+rsi]
+	mov	r10d,DWORD[4+rsi]
 	mov	r11d,edx
 	mov	r12d,edx
 	not	r11d
-	lea	eax,DWORD PTR[((-165796510))+r10*1+rax]
+	lea	eax,[((-165796510))+r10*1+rax]
 	and	r12d,ebx
 	and	r11d,ecx
-	mov	r10d,DWORD PTR[24+rsi]
+	mov	r10d,DWORD[24+rsi]
 	or	r12d,r11d
 	mov	r11d,ecx
 	add	eax,r12d
@@ -208,10 +212,10 @@
 	rol	eax,5
 	add	eax,ebx
 	not	r11d
-	lea	edx,DWORD PTR[((-1069501632))+r10*1+rdx]
+	lea	edx,[((-1069501632))+r10*1+rdx]
 	and	r12d,eax
 	and	r11d,ebx
-	mov	r10d,DWORD PTR[44+rsi]
+	mov	r10d,DWORD[44+rsi]
 	or	r12d,r11d
 	mov	r11d,ebx
 	add	edx,r12d
@@ -219,10 +223,10 @@
 	rol	edx,9
 	add	edx,eax
 	not	r11d
-	lea	ecx,DWORD PTR[643717713+r10*1+rcx]
+	lea	ecx,[643717713+r10*1+rcx]
 	and	r12d,edx
 	and	r11d,eax
-	mov	r10d,DWORD PTR[rsi]
+	mov	r10d,DWORD[rsi]
 	or	r12d,r11d
 	mov	r11d,eax
 	add	ecx,r12d
@@ -230,10 +234,10 @@
 	rol	ecx,14
 	add	ecx,edx
 	not	r11d
-	lea	ebx,DWORD PTR[((-373897302))+r10*1+rbx]
+	lea	ebx,[((-373897302))+r10*1+rbx]
 	and	r12d,ecx
 	and	r11d,edx
-	mov	r10d,DWORD PTR[20+rsi]
+	mov	r10d,DWORD[20+rsi]
 	or	r12d,r11d
 	mov	r11d,edx
 	add	ebx,r12d
@@ -241,10 +245,10 @@
 	rol	ebx,20
 	add	ebx,ecx
 	not	r11d
-	lea	eax,DWORD PTR[((-701558691))+r10*1+rax]
+	lea	eax,[((-701558691))+r10*1+rax]
 	and	r12d,ebx
 	and	r11d,ecx
-	mov	r10d,DWORD PTR[40+rsi]
+	mov	r10d,DWORD[40+rsi]
 	or	r12d,r11d
 	mov	r11d,ecx
 	add	eax,r12d
@@ -252,10 +256,10 @@
 	rol	eax,5
 	add	eax,ebx
 	not	r11d
-	lea	edx,DWORD PTR[38016083+r10*1+rdx]
+	lea	edx,[38016083+r10*1+rdx]
 	and	r12d,eax
 	and	r11d,ebx
-	mov	r10d,DWORD PTR[60+rsi]
+	mov	r10d,DWORD[60+rsi]
 	or	r12d,r11d
 	mov	r11d,ebx
 	add	edx,r12d
@@ -263,10 +267,10 @@
 	rol	edx,9
 	add	edx,eax
 	not	r11d
-	lea	ecx,DWORD PTR[((-660478335))+r10*1+rcx]
+	lea	ecx,[((-660478335))+r10*1+rcx]
 	and	r12d,edx
 	and	r11d,eax
-	mov	r10d,DWORD PTR[16+rsi]
+	mov	r10d,DWORD[16+rsi]
 	or	r12d,r11d
 	mov	r11d,eax
 	add	ecx,r12d
@@ -274,10 +278,10 @@
 	rol	ecx,14
 	add	ecx,edx
 	not	r11d
-	lea	ebx,DWORD PTR[((-405537848))+r10*1+rbx]
+	lea	ebx,[((-405537848))+r10*1+rbx]
 	and	r12d,ecx
 	and	r11d,edx
-	mov	r10d,DWORD PTR[36+rsi]
+	mov	r10d,DWORD[36+rsi]
 	or	r12d,r11d
 	mov	r11d,edx
 	add	ebx,r12d
@@ -285,10 +289,10 @@
 	rol	ebx,20
 	add	ebx,ecx
 	not	r11d
-	lea	eax,DWORD PTR[568446438+r10*1+rax]
+	lea	eax,[568446438+r10*1+rax]
 	and	r12d,ebx
 	and	r11d,ecx
-	mov	r10d,DWORD PTR[56+rsi]
+	mov	r10d,DWORD[56+rsi]
 	or	r12d,r11d
 	mov	r11d,ecx
 	add	eax,r12d
@@ -296,10 +300,10 @@
 	rol	eax,5
 	add	eax,ebx
 	not	r11d
-	lea	edx,DWORD PTR[((-1019803690))+r10*1+rdx]
+	lea	edx,[((-1019803690))+r10*1+rdx]
 	and	r12d,eax
 	and	r11d,ebx
-	mov	r10d,DWORD PTR[12+rsi]
+	mov	r10d,DWORD[12+rsi]
 	or	r12d,r11d
 	mov	r11d,ebx
 	add	edx,r12d
@@ -307,10 +311,10 @@
 	rol	edx,9
 	add	edx,eax
 	not	r11d
-	lea	ecx,DWORD PTR[((-187363961))+r10*1+rcx]
+	lea	ecx,[((-187363961))+r10*1+rcx]
 	and	r12d,edx
 	and	r11d,eax
-	mov	r10d,DWORD PTR[32+rsi]
+	mov	r10d,DWORD[32+rsi]
 	or	r12d,r11d
 	mov	r11d,eax
 	add	ecx,r12d
@@ -318,10 +322,10 @@
 	rol	ecx,14
 	add	ecx,edx
 	not	r11d
-	lea	ebx,DWORD PTR[1163531501+r10*1+rbx]
+	lea	ebx,[1163531501+r10*1+rbx]
 	and	r12d,ecx
 	and	r11d,edx
-	mov	r10d,DWORD PTR[52+rsi]
+	mov	r10d,DWORD[52+rsi]
 	or	r12d,r11d
 	mov	r11d,edx
 	add	ebx,r12d
@@ -329,10 +333,10 @@
 	rol	ebx,20
 	add	ebx,ecx
 	not	r11d
-	lea	eax,DWORD PTR[((-1444681467))+r10*1+rax]
+	lea	eax,[((-1444681467))+r10*1+rax]
 	and	r12d,ebx
 	and	r11d,ecx
-	mov	r10d,DWORD PTR[8+rsi]
+	mov	r10d,DWORD[8+rsi]
 	or	r12d,r11d
 	mov	r11d,ecx
 	add	eax,r12d
@@ -340,10 +344,10 @@
 	rol	eax,5
 	add	eax,ebx
 	not	r11d
-	lea	edx,DWORD PTR[((-51403784))+r10*1+rdx]
+	lea	edx,[((-51403784))+r10*1+rdx]
 	and	r12d,eax
 	and	r11d,ebx
-	mov	r10d,DWORD PTR[28+rsi]
+	mov	r10d,DWORD[28+rsi]
 	or	r12d,r11d
 	mov	r11d,ebx
 	add	edx,r12d
@@ -351,10 +355,10 @@
 	rol	edx,9
 	add	edx,eax
 	not	r11d
-	lea	ecx,DWORD PTR[1735328473+r10*1+rcx]
+	lea	ecx,[1735328473+r10*1+rcx]
 	and	r12d,edx
 	and	r11d,eax
-	mov	r10d,DWORD PTR[48+rsi]
+	mov	r10d,DWORD[48+rsi]
 	or	r12d,r11d
 	mov	r11d,eax
 	add	ecx,r12d
@@ -362,290 +366,290 @@
 	rol	ecx,14
 	add	ecx,edx
 	not	r11d
-	lea	ebx,DWORD PTR[((-1926607734))+r10*1+rbx]
+	lea	ebx,[((-1926607734))+r10*1+rbx]
 	and	r12d,ecx
 	and	r11d,edx
-	mov	r10d,DWORD PTR[rsi]
+	mov	r10d,DWORD[rsi]
 	or	r12d,r11d
 	mov	r11d,edx
 	add	ebx,r12d
 	mov	r12d,edx
 	rol	ebx,20
 	add	ebx,ecx
-	mov	r10d,DWORD PTR[20+rsi]
+	mov	r10d,DWORD[20+rsi]
 	mov	r11d,ecx
-	lea	eax,DWORD PTR[((-378558))+r10*1+rax]
-	mov	r10d,DWORD PTR[32+rsi]
+	lea	eax,[((-378558))+r10*1+rax]
+	mov	r10d,DWORD[32+rsi]
 	xor	r11d,edx
 	xor	r11d,ebx
 	add	eax,r11d
 	rol	eax,4
 	mov	r11d,ebx
 	add	eax,ebx
-	lea	edx,DWORD PTR[((-2022574463))+r10*1+rdx]
-	mov	r10d,DWORD PTR[44+rsi]
+	lea	edx,[((-2022574463))+r10*1+rdx]
+	mov	r10d,DWORD[44+rsi]
 	xor	r11d,ecx
 	xor	r11d,eax
 	add	edx,r11d
 	rol	edx,11
 	mov	r11d,eax
 	add	edx,eax
-	lea	ecx,DWORD PTR[1839030562+r10*1+rcx]
-	mov	r10d,DWORD PTR[56+rsi]
+	lea	ecx,[1839030562+r10*1+rcx]
+	mov	r10d,DWORD[56+rsi]
 	xor	r11d,ebx
 	xor	r11d,edx
 	add	ecx,r11d
 	rol	ecx,16
 	mov	r11d,edx
 	add	ecx,edx
-	lea	ebx,DWORD PTR[((-35309556))+r10*1+rbx]
-	mov	r10d,DWORD PTR[4+rsi]
+	lea	ebx,[((-35309556))+r10*1+rbx]
+	mov	r10d,DWORD[4+rsi]
 	xor	r11d,eax
 	xor	r11d,ecx
 	add	ebx,r11d
 	rol	ebx,23
 	mov	r11d,ecx
 	add	ebx,ecx
-	lea	eax,DWORD PTR[((-1530992060))+r10*1+rax]
-	mov	r10d,DWORD PTR[16+rsi]
+	lea	eax,[((-1530992060))+r10*1+rax]
+	mov	r10d,DWORD[16+rsi]
 	xor	r11d,edx
 	xor	r11d,ebx
 	add	eax,r11d
 	rol	eax,4
 	mov	r11d,ebx
 	add	eax,ebx
-	lea	edx,DWORD PTR[1272893353+r10*1+rdx]
-	mov	r10d,DWORD PTR[28+rsi]
+	lea	edx,[1272893353+r10*1+rdx]
+	mov	r10d,DWORD[28+rsi]
 	xor	r11d,ecx
 	xor	r11d,eax
 	add	edx,r11d
 	rol	edx,11
 	mov	r11d,eax
 	add	edx,eax
-	lea	ecx,DWORD PTR[((-155497632))+r10*1+rcx]
-	mov	r10d,DWORD PTR[40+rsi]
+	lea	ecx,[((-155497632))+r10*1+rcx]
+	mov	r10d,DWORD[40+rsi]
 	xor	r11d,ebx
 	xor	r11d,edx
 	add	ecx,r11d
 	rol	ecx,16
 	mov	r11d,edx
 	add	ecx,edx
-	lea	ebx,DWORD PTR[((-1094730640))+r10*1+rbx]
-	mov	r10d,DWORD PTR[52+rsi]
+	lea	ebx,[((-1094730640))+r10*1+rbx]
+	mov	r10d,DWORD[52+rsi]
 	xor	r11d,eax
 	xor	r11d,ecx
 	add	ebx,r11d
 	rol	ebx,23
 	mov	r11d,ecx
 	add	ebx,ecx
-	lea	eax,DWORD PTR[681279174+r10*1+rax]
-	mov	r10d,DWORD PTR[rsi]
+	lea	eax,[681279174+r10*1+rax]
+	mov	r10d,DWORD[rsi]
 	xor	r11d,edx
 	xor	r11d,ebx
 	add	eax,r11d
 	rol	eax,4
 	mov	r11d,ebx
 	add	eax,ebx
-	lea	edx,DWORD PTR[((-358537222))+r10*1+rdx]
-	mov	r10d,DWORD PTR[12+rsi]
+	lea	edx,[((-358537222))+r10*1+rdx]
+	mov	r10d,DWORD[12+rsi]
 	xor	r11d,ecx
 	xor	r11d,eax
 	add	edx,r11d
 	rol	edx,11
 	mov	r11d,eax
 	add	edx,eax
-	lea	ecx,DWORD PTR[((-722521979))+r10*1+rcx]
-	mov	r10d,DWORD PTR[24+rsi]
+	lea	ecx,[((-722521979))+r10*1+rcx]
+	mov	r10d,DWORD[24+rsi]
 	xor	r11d,ebx
 	xor	r11d,edx
 	add	ecx,r11d
 	rol	ecx,16
 	mov	r11d,edx
 	add	ecx,edx
-	lea	ebx,DWORD PTR[76029189+r10*1+rbx]
-	mov	r10d,DWORD PTR[36+rsi]
+	lea	ebx,[76029189+r10*1+rbx]
+	mov	r10d,DWORD[36+rsi]
 	xor	r11d,eax
 	xor	r11d,ecx
 	add	ebx,r11d
 	rol	ebx,23
 	mov	r11d,ecx
 	add	ebx,ecx
-	lea	eax,DWORD PTR[((-640364487))+r10*1+rax]
-	mov	r10d,DWORD PTR[48+rsi]
+	lea	eax,[((-640364487))+r10*1+rax]
+	mov	r10d,DWORD[48+rsi]
 	xor	r11d,edx
 	xor	r11d,ebx
 	add	eax,r11d
 	rol	eax,4
 	mov	r11d,ebx
 	add	eax,ebx
-	lea	edx,DWORD PTR[((-421815835))+r10*1+rdx]
-	mov	r10d,DWORD PTR[60+rsi]
+	lea	edx,[((-421815835))+r10*1+rdx]
+	mov	r10d,DWORD[60+rsi]
 	xor	r11d,ecx
 	xor	r11d,eax
 	add	edx,r11d
 	rol	edx,11
 	mov	r11d,eax
 	add	edx,eax
-	lea	ecx,DWORD PTR[530742520+r10*1+rcx]
-	mov	r10d,DWORD PTR[8+rsi]
+	lea	ecx,[530742520+r10*1+rcx]
+	mov	r10d,DWORD[8+rsi]
 	xor	r11d,ebx
 	xor	r11d,edx
 	add	ecx,r11d
 	rol	ecx,16
 	mov	r11d,edx
 	add	ecx,edx
-	lea	ebx,DWORD PTR[((-995338651))+r10*1+rbx]
-	mov	r10d,DWORD PTR[rsi]
+	lea	ebx,[((-995338651))+r10*1+rbx]
+	mov	r10d,DWORD[rsi]
 	xor	r11d,eax
 	xor	r11d,ecx
 	add	ebx,r11d
 	rol	ebx,23
 	mov	r11d,ecx
 	add	ebx,ecx
-	mov	r10d,DWORD PTR[rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[rsi]
+	mov	r11d,0xffffffff
 	xor	r11d,edx
-	lea	eax,DWORD PTR[((-198630844))+r10*1+rax]
+	lea	eax,[((-198630844))+r10*1+rax]
 	or	r11d,ebx
 	xor	r11d,ecx
 	add	eax,r11d
-	mov	r10d,DWORD PTR[28+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[28+rsi]
+	mov	r11d,0xffffffff
 	rol	eax,6
 	xor	r11d,ecx
 	add	eax,ebx
-	lea	edx,DWORD PTR[1126891415+r10*1+rdx]
+	lea	edx,[1126891415+r10*1+rdx]
 	or	r11d,eax
 	xor	r11d,ebx
 	add	edx,r11d
-	mov	r10d,DWORD PTR[56+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[56+rsi]
+	mov	r11d,0xffffffff
 	rol	edx,10
 	xor	r11d,ebx
 	add	edx,eax
-	lea	ecx,DWORD PTR[((-1416354905))+r10*1+rcx]
+	lea	ecx,[((-1416354905))+r10*1+rcx]
 	or	r11d,edx
 	xor	r11d,eax
 	add	ecx,r11d
-	mov	r10d,DWORD PTR[20+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[20+rsi]
+	mov	r11d,0xffffffff
 	rol	ecx,15
 	xor	r11d,eax
 	add	ecx,edx
-	lea	ebx,DWORD PTR[((-57434055))+r10*1+rbx]
+	lea	ebx,[((-57434055))+r10*1+rbx]
 	or	r11d,ecx
 	xor	r11d,edx
 	add	ebx,r11d
-	mov	r10d,DWORD PTR[48+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[48+rsi]
+	mov	r11d,0xffffffff
 	rol	ebx,21
 	xor	r11d,edx
 	add	ebx,ecx
-	lea	eax,DWORD PTR[1700485571+r10*1+rax]
+	lea	eax,[1700485571+r10*1+rax]
 	or	r11d,ebx
 	xor	r11d,ecx
 	add	eax,r11d
-	mov	r10d,DWORD PTR[12+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[12+rsi]
+	mov	r11d,0xffffffff
 	rol	eax,6
 	xor	r11d,ecx
 	add	eax,ebx
-	lea	edx,DWORD PTR[((-1894986606))+r10*1+rdx]
+	lea	edx,[((-1894986606))+r10*1+rdx]
 	or	r11d,eax
 	xor	r11d,ebx
 	add	edx,r11d
-	mov	r10d,DWORD PTR[40+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[40+rsi]
+	mov	r11d,0xffffffff
 	rol	edx,10
 	xor	r11d,ebx
 	add	edx,eax
-	lea	ecx,DWORD PTR[((-1051523))+r10*1+rcx]
+	lea	ecx,[((-1051523))+r10*1+rcx]
 	or	r11d,edx
 	xor	r11d,eax
 	add	ecx,r11d
-	mov	r10d,DWORD PTR[4+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[4+rsi]
+	mov	r11d,0xffffffff
 	rol	ecx,15
 	xor	r11d,eax
 	add	ecx,edx
-	lea	ebx,DWORD PTR[((-2054922799))+r10*1+rbx]
+	lea	ebx,[((-2054922799))+r10*1+rbx]
 	or	r11d,ecx
 	xor	r11d,edx
 	add	ebx,r11d
-	mov	r10d,DWORD PTR[32+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[32+rsi]
+	mov	r11d,0xffffffff
 	rol	ebx,21
 	xor	r11d,edx
 	add	ebx,ecx
-	lea	eax,DWORD PTR[1873313359+r10*1+rax]
+	lea	eax,[1873313359+r10*1+rax]
 	or	r11d,ebx
 	xor	r11d,ecx
 	add	eax,r11d
-	mov	r10d,DWORD PTR[60+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[60+rsi]
+	mov	r11d,0xffffffff
 	rol	eax,6
 	xor	r11d,ecx
 	add	eax,ebx
-	lea	edx,DWORD PTR[((-30611744))+r10*1+rdx]
+	lea	edx,[((-30611744))+r10*1+rdx]
 	or	r11d,eax
 	xor	r11d,ebx
 	add	edx,r11d
-	mov	r10d,DWORD PTR[24+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[24+rsi]
+	mov	r11d,0xffffffff
 	rol	edx,10
 	xor	r11d,ebx
 	add	edx,eax
-	lea	ecx,DWORD PTR[((-1560198380))+r10*1+rcx]
+	lea	ecx,[((-1560198380))+r10*1+rcx]
 	or	r11d,edx
 	xor	r11d,eax
 	add	ecx,r11d
-	mov	r10d,DWORD PTR[52+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[52+rsi]
+	mov	r11d,0xffffffff
 	rol	ecx,15
 	xor	r11d,eax
 	add	ecx,edx
-	lea	ebx,DWORD PTR[1309151649+r10*1+rbx]
+	lea	ebx,[1309151649+r10*1+rbx]
 	or	r11d,ecx
 	xor	r11d,edx
 	add	ebx,r11d
-	mov	r10d,DWORD PTR[16+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[16+rsi]
+	mov	r11d,0xffffffff
 	rol	ebx,21
 	xor	r11d,edx
 	add	ebx,ecx
-	lea	eax,DWORD PTR[((-145523070))+r10*1+rax]
+	lea	eax,[((-145523070))+r10*1+rax]
 	or	r11d,ebx
 	xor	r11d,ecx
 	add	eax,r11d
-	mov	r10d,DWORD PTR[44+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[44+rsi]
+	mov	r11d,0xffffffff
 	rol	eax,6
 	xor	r11d,ecx
 	add	eax,ebx
-	lea	edx,DWORD PTR[((-1120210379))+r10*1+rdx]
+	lea	edx,[((-1120210379))+r10*1+rdx]
 	or	r11d,eax
 	xor	r11d,ebx
 	add	edx,r11d
-	mov	r10d,DWORD PTR[8+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[8+rsi]
+	mov	r11d,0xffffffff
 	rol	edx,10
 	xor	r11d,ebx
 	add	edx,eax
-	lea	ecx,DWORD PTR[718787259+r10*1+rcx]
+	lea	ecx,[718787259+r10*1+rcx]
 	or	r11d,edx
 	xor	r11d,eax
 	add	ecx,r11d
-	mov	r10d,DWORD PTR[36+rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[36+rsi]
+	mov	r11d,0xffffffff
 	rol	ecx,15
 	xor	r11d,eax
 	add	ecx,edx
-	lea	ebx,DWORD PTR[((-343485551))+r10*1+rbx]
+	lea	ebx,[((-343485551))+r10*1+rbx]
 	or	r11d,ecx
 	xor	r11d,edx
 	add	ebx,r11d
-	mov	r10d,DWORD PTR[rsi]
-	mov	r11d,0ffffffffh
+	mov	r10d,DWORD[rsi]
+	mov	r11d,0xffffffff
 	rol	ebx,21
 	xor	r11d,edx
 	add	ebx,ecx
@@ -658,31 +662,30 @@
 
 	add	rsi,64
 	cmp	rsi,rdi
-	jb	$L$loop
+	jb	NEAR $L$loop
 
 
-$L$end::
-	mov	DWORD PTR[rbp],eax
-	mov	DWORD PTR[4+rbp],ebx
-	mov	DWORD PTR[8+rbp],ecx
-	mov	DWORD PTR[12+rbp],edx
+$L$end:
+	mov	DWORD[rbp],eax
+	mov	DWORD[4+rbp],ebx
+	mov	DWORD[8+rbp],ecx
+	mov	DWORD[12+rbp],edx
 
-	mov	r15,QWORD PTR[rsp]
-	mov	r14,QWORD PTR[8+rsp]
-	mov	r12,QWORD PTR[16+rsp]
-	mov	rbx,QWORD PTR[24+rsp]
-	mov	rbp,QWORD PTR[32+rsp]
+	mov	r15,QWORD[rsp]
+	mov	r14,QWORD[8+rsp]
+	mov	r12,QWORD[16+rsp]
+	mov	rbx,QWORD[24+rsp]
+	mov	rbp,QWORD[32+rsp]
 	add	rsp,40
-$L$epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_md5_block_asm_data_order::
-md5_block_asm_data_order	ENDP
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+$L$SEH_end_md5_block_asm_data_order:
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -694,57 +697,57 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$prologue]
+	lea	r10,[$L$prologue]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	lea	rax,QWORD PTR[40+rax]
+	lea	rax,[40+rax]
 
-	mov	rbp,QWORD PTR[((-8))+rax]
-	mov	rbx,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r14,QWORD PTR[((-32))+rax]
-	mov	r15,QWORD PTR[((-40))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbp,QWORD[((-8))+rax]
+	mov	rbx,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r14,QWORD[((-32))+rax]
+	mov	r15,QWORD[((-40))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -758,21 +761,16 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_md5_block_asm_data_order
-	DD	imagerel $L$SEH_end_md5_block_asm_data_order
-	DD	imagerel $L$SEH_info_md5_block_asm_data_order
+	DD	$L$SEH_begin_md5_block_asm_data_order wrt ..imagebase
+	DD	$L$SEH_end_md5_block_asm_data_order wrt ..imagebase
+	DD	$L$SEH_info_md5_block_asm_data_order wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_md5_block_asm_data_order::
+$L$SEH_info_md5_block_asm_data_order:
 DB	9,0,0,0
-	DD	imagerel se_handler
-
-.xdata	ENDS
-END
+	DD	se_handler wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/modes/aesni-gcm-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/modes/aesni-gcm-x86_64.asm
index 828be8d..d7fff6a 100644
--- a/third_party/boringssl/win-x86_64/crypto/modes/aesni-gcm-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/modes/aesni-gcm-x86_64.asm
@@ -1,19 +1,20 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-PUBLIC	aesni_gcm_encrypt
 
-aesni_gcm_encrypt	PROC PUBLIC
+global	aesni_gcm_encrypt
+
+aesni_gcm_encrypt:
 	xor	eax,eax
 	DB	0F3h,0C3h		;repret
-aesni_gcm_encrypt	ENDP
 
-PUBLIC	aesni_gcm_decrypt
 
-aesni_gcm_decrypt	PROC PUBLIC
+global	aesni_gcm_decrypt
+
+aesni_gcm_decrypt:
 	xor	eax,eax
 	DB	0F3h,0C3h		;repret
-aesni_gcm_decrypt	ENDP
 
-.text$	ENDS
-END
diff --git a/third_party/boringssl/win-x86_64/crypto/modes/ghash-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/modes/ghash-x86_64.asm
index 9993d75..5d8fadc 100644
--- a/third_party/boringssl/win-x86_64/crypto/modes/ghash-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/modes/ghash-x86_64.asm
@@ -1,15 +1,19 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
-EXTERN	OPENSSL_ia32cap_P:NEAR
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-PUBLIC	gcm_gmult_4bit
+EXTERN	OPENSSL_ia32cap_P
+
+global	gcm_gmult_4bit
 
 ALIGN	16
-gcm_gmult_4bit	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+gcm_gmult_4bit:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_gcm_gmult_4bit::
+$L$SEH_begin_gcm_gmult_4bit:
 	mov	rdi,rcx
 	mov	rsi,rdx
 
@@ -17,98 +21,97 @@
 	push	rbx
 	push	rbp
 	push	r12
-$L$gmult_prologue::
+$L$gmult_prologue:
 
-	movzx	r8,BYTE PTR[15+rdi]
-	lea	r11,QWORD PTR[$L$rem_4bit]
+	movzx	r8,BYTE[15+rdi]
+	lea	r11,[$L$rem_4bit]
 	xor	rax,rax
 	xor	rbx,rbx
 	mov	al,r8b
 	mov	bl,r8b
 	shl	al,4
 	mov	rcx,14
-	mov	r8,QWORD PTR[8+rax*1+rsi]
-	mov	r9,QWORD PTR[rax*1+rsi]
-	and	bl,0f0h
+	mov	r8,QWORD[8+rax*1+rsi]
+	mov	r9,QWORD[rax*1+rsi]
+	and	bl,0xf0
 	mov	rdx,r8
-	jmp	$L$oop1
+	jmp	NEAR $L$oop1
 
 ALIGN	16
-$L$oop1::
+$L$oop1:
 	shr	r8,4
-	and	rdx,0fh
+	and	rdx,0xf
 	mov	r10,r9
-	mov	al,BYTE PTR[rcx*1+rdi]
+	mov	al,BYTE[rcx*1+rdi]
 	shr	r9,4
-	xor	r8,QWORD PTR[8+rbx*1+rsi]
+	xor	r8,QWORD[8+rbx*1+rsi]
 	shl	r10,60
-	xor	r9,QWORD PTR[rbx*1+rsi]
+	xor	r9,QWORD[rbx*1+rsi]
 	mov	bl,al
-	xor	r9,QWORD PTR[rdx*8+r11]
+	xor	r9,QWORD[rdx*8+r11]
 	mov	rdx,r8
 	shl	al,4
 	xor	r8,r10
 	dec	rcx
-	js	$L$break1
+	js	NEAR $L$break1
 
 	shr	r8,4
-	and	rdx,0fh
+	and	rdx,0xf
 	mov	r10,r9
 	shr	r9,4
-	xor	r8,QWORD PTR[8+rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
 	shl	r10,60
-	xor	r9,QWORD PTR[rax*1+rsi]
-	and	bl,0f0h
-	xor	r9,QWORD PTR[rdx*8+r11]
+	xor	r9,QWORD[rax*1+rsi]
+	and	bl,0xf0
+	xor	r9,QWORD[rdx*8+r11]
 	mov	rdx,r8
 	xor	r8,r10
-	jmp	$L$oop1
+	jmp	NEAR $L$oop1
 
 ALIGN	16
-$L$break1::
+$L$break1:
 	shr	r8,4
-	and	rdx,0fh
+	and	rdx,0xf
 	mov	r10,r9
 	shr	r9,4
-	xor	r8,QWORD PTR[8+rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
 	shl	r10,60
-	xor	r9,QWORD PTR[rax*1+rsi]
-	and	bl,0f0h
-	xor	r9,QWORD PTR[rdx*8+r11]
+	xor	r9,QWORD[rax*1+rsi]
+	and	bl,0xf0
+	xor	r9,QWORD[rdx*8+r11]
 	mov	rdx,r8
 	xor	r8,r10
 
 	shr	r8,4
-	and	rdx,0fh
+	and	rdx,0xf
 	mov	r10,r9
 	shr	r9,4
-	xor	r8,QWORD PTR[8+rbx*1+rsi]
+	xor	r8,QWORD[8+rbx*1+rsi]
 	shl	r10,60
-	xor	r9,QWORD PTR[rbx*1+rsi]
+	xor	r9,QWORD[rbx*1+rsi]
 	xor	r8,r10
-	xor	r9,QWORD PTR[rdx*8+r11]
+	xor	r9,QWORD[rdx*8+r11]
 
 	bswap	r8
 	bswap	r9
-	mov	QWORD PTR[8+rdi],r8
-	mov	QWORD PTR[rdi],r9
+	mov	QWORD[8+rdi],r8
+	mov	QWORD[rdi],r9
 
-	mov	rbx,QWORD PTR[16+rsp]
-	lea	rsp,QWORD PTR[24+rsp]
-$L$gmult_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rbx,QWORD[16+rsp]
+	lea	rsp,[24+rsp]
+$L$gmult_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_gcm_gmult_4bit::
-gcm_gmult_4bit	ENDP
-PUBLIC	gcm_ghash_4bit
+$L$SEH_end_gcm_gmult_4bit:
+global	gcm_ghash_4bit
 
 ALIGN	16
-gcm_ghash_4bit	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+gcm_ghash_4bit:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_gcm_ghash_4bit::
+$L$SEH_begin_gcm_ghash_4bit:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -122,218 +125,218 @@
 	push	r14
 	push	r15
 	sub	rsp,280
-$L$ghash_prologue::
+$L$ghash_prologue:
 	mov	r14,rdx
 	mov	r15,rcx
 	sub	rsi,-128
-	lea	rbp,QWORD PTR[((16+128))+rsp]
+	lea	rbp,[((16+128))+rsp]
 	xor	edx,edx
-	mov	r8,QWORD PTR[((0+0-128))+rsi]
-	mov	rax,QWORD PTR[((0+8-128))+rsi]
+	mov	r8,QWORD[((0+0-128))+rsi]
+	mov	rax,QWORD[((0+8-128))+rsi]
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	r9,QWORD PTR[((16+0-128))+rsi]
+	mov	r9,QWORD[((16+0-128))+rsi]
 	shl	dl,4
-	mov	rbx,QWORD PTR[((16+8-128))+rsi]
+	mov	rbx,QWORD[((16+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[rsp],dl
+	mov	BYTE[rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[rbp],r8
-	mov	r8,QWORD PTR[((32+0-128))+rsi]
+	mov	QWORD[rbp],r8
+	mov	r8,QWORD[((32+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((0-128))+rbp],rax
-	mov	rax,QWORD PTR[((32+8-128))+rsi]
+	mov	QWORD[((0-128))+rbp],rax
+	mov	rax,QWORD[((32+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[1+rsp],dl
+	mov	BYTE[1+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[8+rbp],r9
-	mov	r9,QWORD PTR[((48+0-128))+rsi]
+	mov	QWORD[8+rbp],r9
+	mov	r9,QWORD[((48+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((8-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((48+8-128))+rsi]
+	mov	QWORD[((8-128))+rbp],rbx
+	mov	rbx,QWORD[((48+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[2+rsp],dl
+	mov	BYTE[2+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[16+rbp],r8
-	mov	r8,QWORD PTR[((64+0-128))+rsi]
+	mov	QWORD[16+rbp],r8
+	mov	r8,QWORD[((64+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((16-128))+rbp],rax
-	mov	rax,QWORD PTR[((64+8-128))+rsi]
+	mov	QWORD[((16-128))+rbp],rax
+	mov	rax,QWORD[((64+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[3+rsp],dl
+	mov	BYTE[3+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[24+rbp],r9
-	mov	r9,QWORD PTR[((80+0-128))+rsi]
+	mov	QWORD[24+rbp],r9
+	mov	r9,QWORD[((80+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((24-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((80+8-128))+rsi]
+	mov	QWORD[((24-128))+rbp],rbx
+	mov	rbx,QWORD[((80+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[4+rsp],dl
+	mov	BYTE[4+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[32+rbp],r8
-	mov	r8,QWORD PTR[((96+0-128))+rsi]
+	mov	QWORD[32+rbp],r8
+	mov	r8,QWORD[((96+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((32-128))+rbp],rax
-	mov	rax,QWORD PTR[((96+8-128))+rsi]
+	mov	QWORD[((32-128))+rbp],rax
+	mov	rax,QWORD[((96+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[5+rsp],dl
+	mov	BYTE[5+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[40+rbp],r9
-	mov	r9,QWORD PTR[((112+0-128))+rsi]
+	mov	QWORD[40+rbp],r9
+	mov	r9,QWORD[((112+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((40-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((112+8-128))+rsi]
+	mov	QWORD[((40-128))+rbp],rbx
+	mov	rbx,QWORD[((112+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[6+rsp],dl
+	mov	BYTE[6+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[48+rbp],r8
-	mov	r8,QWORD PTR[((128+0-128))+rsi]
+	mov	QWORD[48+rbp],r8
+	mov	r8,QWORD[((128+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((48-128))+rbp],rax
-	mov	rax,QWORD PTR[((128+8-128))+rsi]
+	mov	QWORD[((48-128))+rbp],rax
+	mov	rax,QWORD[((128+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[7+rsp],dl
+	mov	BYTE[7+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[56+rbp],r9
-	mov	r9,QWORD PTR[((144+0-128))+rsi]
+	mov	QWORD[56+rbp],r9
+	mov	r9,QWORD[((144+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((56-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((144+8-128))+rsi]
+	mov	QWORD[((56-128))+rbp],rbx
+	mov	rbx,QWORD[((144+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[8+rsp],dl
+	mov	BYTE[8+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[64+rbp],r8
-	mov	r8,QWORD PTR[((160+0-128))+rsi]
+	mov	QWORD[64+rbp],r8
+	mov	r8,QWORD[((160+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((64-128))+rbp],rax
-	mov	rax,QWORD PTR[((160+8-128))+rsi]
+	mov	QWORD[((64-128))+rbp],rax
+	mov	rax,QWORD[((160+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[9+rsp],dl
+	mov	BYTE[9+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[72+rbp],r9
-	mov	r9,QWORD PTR[((176+0-128))+rsi]
+	mov	QWORD[72+rbp],r9
+	mov	r9,QWORD[((176+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((72-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((176+8-128))+rsi]
+	mov	QWORD[((72-128))+rbp],rbx
+	mov	rbx,QWORD[((176+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[10+rsp],dl
+	mov	BYTE[10+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[80+rbp],r8
-	mov	r8,QWORD PTR[((192+0-128))+rsi]
+	mov	QWORD[80+rbp],r8
+	mov	r8,QWORD[((192+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((80-128))+rbp],rax
-	mov	rax,QWORD PTR[((192+8-128))+rsi]
+	mov	QWORD[((80-128))+rbp],rax
+	mov	rax,QWORD[((192+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[11+rsp],dl
+	mov	BYTE[11+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[88+rbp],r9
-	mov	r9,QWORD PTR[((208+0-128))+rsi]
+	mov	QWORD[88+rbp],r9
+	mov	r9,QWORD[((208+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((88-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((208+8-128))+rsi]
+	mov	QWORD[((88-128))+rbp],rbx
+	mov	rbx,QWORD[((208+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[12+rsp],dl
+	mov	BYTE[12+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[96+rbp],r8
-	mov	r8,QWORD PTR[((224+0-128))+rsi]
+	mov	QWORD[96+rbp],r8
+	mov	r8,QWORD[((224+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((96-128))+rbp],rax
-	mov	rax,QWORD PTR[((224+8-128))+rsi]
+	mov	QWORD[((96-128))+rbp],rax
+	mov	rax,QWORD[((224+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[13+rsp],dl
+	mov	BYTE[13+rsp],dl
 	or	rbx,r10
 	mov	dl,al
 	shr	rax,4
 	mov	r10,r8
 	shr	r8,4
-	mov	QWORD PTR[104+rbp],r9
-	mov	r9,QWORD PTR[((240+0-128))+rsi]
+	mov	QWORD[104+rbp],r9
+	mov	r9,QWORD[((240+0-128))+rsi]
 	shl	dl,4
-	mov	QWORD PTR[((104-128))+rbp],rbx
-	mov	rbx,QWORD PTR[((240+8-128))+rsi]
+	mov	QWORD[((104-128))+rbp],rbx
+	mov	rbx,QWORD[((240+8-128))+rsi]
 	shl	r10,60
-	mov	BYTE PTR[14+rsp],dl
+	mov	BYTE[14+rsp],dl
 	or	rax,r10
 	mov	dl,bl
 	shr	rbx,4
 	mov	r10,r9
 	shr	r9,4
-	mov	QWORD PTR[112+rbp],r8
+	mov	QWORD[112+rbp],r8
 	shl	dl,4
-	mov	QWORD PTR[((112-128))+rbp],rax
+	mov	QWORD[((112-128))+rbp],rax
 	shl	r10,60
-	mov	BYTE PTR[15+rsp],dl
+	mov	BYTE[15+rsp],dl
 	or	rbx,r10
-	mov	QWORD PTR[120+rbp],r9
-	mov	QWORD PTR[((120-128))+rbp],rbx
+	mov	QWORD[120+rbp],r9
+	mov	QWORD[((120-128))+rbp],rbx
 	add	rsi,-128
-	mov	r8,QWORD PTR[8+rdi]
-	mov	r9,QWORD PTR[rdi]
+	mov	r8,QWORD[8+rdi]
+	mov	r9,QWORD[rdi]
 	add	r15,r14
-	lea	r11,QWORD PTR[$L$rem_8bit]
-	jmp	$L$outer_loop
+	lea	r11,[$L$rem_8bit]
+	jmp	NEAR $L$outer_loop
 ALIGN	16
-$L$outer_loop::
-	xor	r9,QWORD PTR[r14]
-	mov	rdx,QWORD PTR[8+r14]
-	lea	r14,QWORD PTR[16+r14]
+$L$outer_loop:
+	xor	r9,QWORD[r14]
+	mov	rdx,QWORD[8+r14]
+	lea	r14,[16+r14]
 	xor	rdx,r8
-	mov	QWORD PTR[rdi],r9
-	mov	QWORD PTR[8+rdi],rdx
+	mov	QWORD[rdi],r9
+	mov	QWORD[8+rdi],rdx
 	shr	rdx,32
 	xor	rax,rax
 	rol	edx,8
@@ -342,30 +345,30 @@
 	shl	al,4
 	shr	ebx,4
 	rol	edx,8
-	mov	r8,QWORD PTR[8+rax*1+rsi]
-	mov	r9,QWORD PTR[rax*1+rsi]
+	mov	r8,QWORD[8+rax*1+rsi]
+	mov	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	xor	r12,r8
 	mov	r10,r9
 	shr	r8,8
 	movzx	r12,r12b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -374,18 +377,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	shl	r13,48
 	xor	r12,r8
@@ -393,20 +396,20 @@
 	xor	r9,r13
 	shr	r8,8
 	movzx	r12,r12b
-	mov	edx,DWORD PTR[8+rdi]
+	mov	edx,DWORD[8+rdi]
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -415,18 +418,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	shl	r13,48
 	xor	r12,r8
@@ -435,18 +438,18 @@
 	shr	r8,8
 	movzx	r12,r12b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -455,18 +458,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	shl	r13,48
 	xor	r12,r8
@@ -474,20 +477,20 @@
 	xor	r9,r13
 	shr	r8,8
 	movzx	r12,r12b
-	mov	edx,DWORD PTR[4+rdi]
+	mov	edx,DWORD[4+rdi]
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -496,18 +499,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	shl	r13,48
 	xor	r12,r8
@@ -516,18 +519,18 @@
 	shr	r8,8
 	movzx	r12,r12b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -536,18 +539,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	shl	r13,48
 	xor	r12,r8
@@ -555,20 +558,20 @@
 	xor	r9,r13
 	shr	r8,8
 	movzx	r12,r12b
-	mov	edx,DWORD PTR[rdi]
+	mov	edx,DWORD[rdi]
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -577,18 +580,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	shr	ecx,4
 	shl	r13,48
 	xor	r12,r8
@@ -597,18 +600,18 @@
 	shr	r8,8
 	movzx	r12,r12b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
+	xor	r9,QWORD[rbx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r12,WORD PTR[r12*2+r11]
+	movzx	r12,WORD[r12*2+r11]
 	movzx	ebx,dl
 	shl	al,4
-	movzx	r13,BYTE PTR[rcx*1+rsp]
+	movzx	r13,BYTE[rcx*1+rsp]
 	shr	ebx,4
 	shl	r12,48
 	xor	r13,r8
@@ -617,18 +620,18 @@
 	shr	r8,8
 	movzx	r13,r13b
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rcx*8+rbp]
+	xor	r8,QWORD[((-128))+rcx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rcx*8+rbp]
+	xor	r9,QWORD[rcx*8+rbp]
 	rol	edx,8
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	mov	al,dl
 	xor	r8,r10
-	movzx	r13,WORD PTR[r13*2+r11]
+	movzx	r13,WORD[r13*2+r11]
 	movzx	ecx,dl
 	shl	al,4
-	movzx	r12,BYTE PTR[rbx*1+rsp]
+	movzx	r12,BYTE[rbx*1+rsp]
 	and	ecx,240
 	shl	r13,48
 	xor	r12,r8
@@ -636,14 +639,14 @@
 	xor	r9,r13
 	shr	r8,8
 	movzx	r12,r12b
-	mov	edx,DWORD PTR[((-4))+rdi]
+	mov	edx,DWORD[((-4))+rdi]
 	shr	r9,8
-	xor	r8,QWORD PTR[((-128))+rbx*8+rbp]
+	xor	r8,QWORD[((-128))+rbx*8+rbp]
 	shl	r10,56
-	xor	r9,QWORD PTR[rbx*8+rbp]
-	movzx	r12,WORD PTR[r12*2+r11]
-	xor	r8,QWORD PTR[8+rax*1+rsi]
-	xor	r9,QWORD PTR[rax*1+rsi]
+	xor	r9,QWORD[rbx*8+rbp]
+	movzx	r12,WORD[r12*2+r11]
+	xor	r8,QWORD[8+rax*1+rsi]
+	xor	r9,QWORD[rax*1+rsi]
 	shl	r12,48
 	xor	r8,r10
 	xor	r9,r12
@@ -652,44 +655,43 @@
 	mov	r10,r9
 	shl	r13b,4
 	shr	r9,4
-	xor	r8,QWORD PTR[8+rcx*1+rsi]
-	movzx	r13,WORD PTR[r13*2+r11]
+	xor	r8,QWORD[8+rcx*1+rsi]
+	movzx	r13,WORD[r13*2+r11]
 	shl	r10,60
-	xor	r9,QWORD PTR[rcx*1+rsi]
+	xor	r9,QWORD[rcx*1+rsi]
 	xor	r8,r10
 	shl	r13,48
 	bswap	r8
 	xor	r9,r13
 	bswap	r9
 	cmp	r14,r15
-	jb	$L$outer_loop
-	mov	QWORD PTR[8+rdi],r8
-	mov	QWORD PTR[rdi],r9
+	jb	NEAR $L$outer_loop
+	mov	QWORD[8+rdi],r8
+	mov	QWORD[rdi],r9
 
-	lea	rsi,QWORD PTR[280+rsp]
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$ghash_epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	lea	rsi,[280+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$ghash_epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_gcm_ghash_4bit::
-gcm_ghash_4bit	ENDP
-PUBLIC	gcm_init_clmul
+$L$SEH_end_gcm_ghash_4bit:
+global	gcm_init_clmul
 
 ALIGN	16
-gcm_init_clmul	PROC PUBLIC
-$L$_init_clmul::
-$L$SEH_begin_gcm_init_clmul::
+gcm_init_clmul:
+$L$_init_clmul:
+$L$SEH_begin_gcm_init_clmul:
 
-DB	048h,083h,0ech,018h
-DB	00fh,029h,034h,024h
-	movdqu	xmm2,XMMWORD PTR[rdx]
+DB	0x48,0x83,0xec,0x18
+DB	0x0f,0x29,0x34,0x24
+	movdqu	xmm2,XMMWORD[rdx]
 	pshufd	xmm2,xmm2,78
 
 
@@ -703,7 +705,7 @@
 	por	xmm2,xmm3
 
 
-	pand	xmm5,XMMWORD PTR[$L$0x1c2_polynomial]
+	pand	xmm5,XMMWORD[$L$0x1c2_polynomial]
 	pxor	xmm2,xmm5
 
 
@@ -750,11 +752,11 @@
 	pshufd	xmm3,xmm2,78
 	pshufd	xmm4,xmm0,78
 	pxor	xmm3,xmm2
-	movdqu	XMMWORD PTR[rcx],xmm2
+	movdqu	XMMWORD[rcx],xmm2
 	pxor	xmm4,xmm0
-	movdqu	XMMWORD PTR[16+rcx],xmm0
+	movdqu	XMMWORD[16+rcx],xmm0
 DB	102,15,58,15,227,8
-	movdqu	XMMWORD PTR[32+rcx],xmm4
+	movdqu	XMMWORD[32+rcx],xmm4
 	movdqa	xmm1,xmm0
 	pshufd	xmm3,xmm0,78
 	pxor	xmm3,xmm0
@@ -833,25 +835,25 @@
 	pshufd	xmm3,xmm5,78
 	pshufd	xmm4,xmm0,78
 	pxor	xmm3,xmm5
-	movdqu	XMMWORD PTR[48+rcx],xmm5
+	movdqu	XMMWORD[48+rcx],xmm5
 	pxor	xmm4,xmm0
-	movdqu	XMMWORD PTR[64+rcx],xmm0
+	movdqu	XMMWORD[64+rcx],xmm0
 DB	102,15,58,15,227,8
-	movdqu	XMMWORD PTR[80+rcx],xmm4
-	movaps	xmm6,XMMWORD PTR[rsp]
-	lea	rsp,QWORD PTR[24+rsp]
-$L$SEH_end_gcm_init_clmul::
+	movdqu	XMMWORD[80+rcx],xmm4
+	movaps	xmm6,XMMWORD[rsp]
+	lea	rsp,[24+rsp]
+$L$SEH_end_gcm_init_clmul:
 	DB	0F3h,0C3h		;repret
-gcm_init_clmul	ENDP
-PUBLIC	gcm_gmult_clmul
+
+global	gcm_gmult_clmul
 
 ALIGN	16
-gcm_gmult_clmul	PROC PUBLIC
-$L$_gmult_clmul::
-	movdqu	xmm0,XMMWORD PTR[rcx]
-	movdqa	xmm5,XMMWORD PTR[$L$bswap_mask]
-	movdqu	xmm2,XMMWORD PTR[rdx]
-	movdqu	xmm4,XMMWORD PTR[32+rdx]
+gcm_gmult_clmul:
+$L$_gmult_clmul:
+	movdqu	xmm0,XMMWORD[rcx]
+	movdqa	xmm5,XMMWORD[$L$bswap_mask]
+	movdqu	xmm2,XMMWORD[rdx]
+	movdqu	xmm4,XMMWORD[32+rdx]
 DB	102,15,56,0,197
 	movdqa	xmm1,xmm0
 	pshufd	xmm3,xmm0,78
@@ -891,57 +893,57 @@
 	psrlq	xmm0,1
 	pxor	xmm0,xmm1
 DB	102,15,56,0,197
-	movdqu	XMMWORD PTR[rcx],xmm0
+	movdqu	XMMWORD[rcx],xmm0
 	DB	0F3h,0C3h		;repret
-gcm_gmult_clmul	ENDP
-PUBLIC	gcm_ghash_clmul
+
+global	gcm_ghash_clmul
 
 ALIGN	32
-gcm_ghash_clmul	PROC PUBLIC
-$L$_ghash_clmul::
-	lea	rax,QWORD PTR[((-136))+rsp]
-$L$SEH_begin_gcm_ghash_clmul::
+gcm_ghash_clmul:
+$L$_ghash_clmul:
+	lea	rax,[((-136))+rsp]
+$L$SEH_begin_gcm_ghash_clmul:
 
-DB	048h,08dh,060h,0e0h
-DB	00fh,029h,070h,0e0h
-DB	00fh,029h,078h,0f0h
-DB	044h,00fh,029h,000h
-DB	044h,00fh,029h,048h,010h
-DB	044h,00fh,029h,050h,020h
-DB	044h,00fh,029h,058h,030h
-DB	044h,00fh,029h,060h,040h
-DB	044h,00fh,029h,068h,050h
-DB	044h,00fh,029h,070h,060h
-DB	044h,00fh,029h,078h,070h
-	movdqa	xmm10,XMMWORD PTR[$L$bswap_mask]
+DB	0x48,0x8d,0x60,0xe0
+DB	0x0f,0x29,0x70,0xe0
+DB	0x0f,0x29,0x78,0xf0
+DB	0x44,0x0f,0x29,0x00
+DB	0x44,0x0f,0x29,0x48,0x10
+DB	0x44,0x0f,0x29,0x50,0x20
+DB	0x44,0x0f,0x29,0x58,0x30
+DB	0x44,0x0f,0x29,0x60,0x40
+DB	0x44,0x0f,0x29,0x68,0x50
+DB	0x44,0x0f,0x29,0x70,0x60
+DB	0x44,0x0f,0x29,0x78,0x70
+	movdqa	xmm10,XMMWORD[$L$bswap_mask]
 
-	movdqu	xmm0,XMMWORD PTR[rcx]
-	movdqu	xmm2,XMMWORD PTR[rdx]
-	movdqu	xmm7,XMMWORD PTR[32+rdx]
+	movdqu	xmm0,XMMWORD[rcx]
+	movdqu	xmm2,XMMWORD[rdx]
+	movdqu	xmm7,XMMWORD[32+rdx]
 DB	102,65,15,56,0,194
 
-	sub	r9,010h
-	jz	$L$odd_tail
+	sub	r9,0x10
+	jz	NEAR $L$odd_tail
 
-	movdqu	xmm6,XMMWORD PTR[16+rdx]
-	mov	eax,DWORD PTR[((OPENSSL_ia32cap_P+4))]
-	cmp	r9,030h
-	jb	$L$skip4x
+	movdqu	xmm6,XMMWORD[16+rdx]
+	mov	eax,DWORD[((OPENSSL_ia32cap_P+4))]
+	cmp	r9,0x30
+	jb	NEAR $L$skip4x
 
 	and	eax,71303168
 	cmp	eax,4194304
-	je	$L$skip4x
+	je	NEAR $L$skip4x
 
-	sub	r9,030h
-	mov	rax,0A040608020C0E000h
-	movdqu	xmm14,XMMWORD PTR[48+rdx]
-	movdqu	xmm15,XMMWORD PTR[64+rdx]
+	sub	r9,0x30
+	mov	rax,0xA040608020C0E000
+	movdqu	xmm14,XMMWORD[48+rdx]
+	movdqu	xmm15,XMMWORD[64+rdx]
 
 
 
 
-	movdqu	xmm3,XMMWORD PTR[48+r8]
-	movdqu	xmm11,XMMWORD PTR[32+r8]
+	movdqu	xmm3,XMMWORD[48+r8]
+	movdqu	xmm11,XMMWORD[32+r8]
 DB	102,65,15,56,0,218
 DB	102,69,15,56,0,218
 	movdqa	xmm5,xmm3
@@ -959,11 +961,11 @@
 DB	102,68,15,58,68,231,16
 	xorps	xmm3,xmm11
 	xorps	xmm5,xmm13
-	movups	xmm7,XMMWORD PTR[80+rdx]
+	movups	xmm7,XMMWORD[80+rdx]
 	xorps	xmm4,xmm12
 
-	movdqu	xmm11,XMMWORD PTR[16+r8]
-	movdqu	xmm8,XMMWORD PTR[r8]
+	movdqu	xmm11,XMMWORD[16+r8]
+	movdqu	xmm8,XMMWORD[r8]
 DB	102,69,15,56,0,218
 DB	102,69,15,56,0,194
 	movdqa	xmm13,xmm11
@@ -979,27 +981,27 @@
 	xorps	xmm3,xmm11
 	xorps	xmm5,xmm13
 
-	lea	r8,QWORD PTR[64+r8]
-	sub	r9,040h
-	jc	$L$tail4x
+	lea	r8,[64+r8]
+	sub	r9,0x40
+	jc	NEAR $L$tail4x
 
-	jmp	$L$mod4_loop
+	jmp	NEAR $L$mod4_loop
 ALIGN	32
-$L$mod4_loop::
+$L$mod4_loop:
 DB	102,65,15,58,68,199,0
 	xorps	xmm4,xmm12
-	movdqu	xmm11,XMMWORD PTR[48+r8]
+	movdqu	xmm11,XMMWORD[48+r8]
 DB	102,69,15,56,0,218
 DB	102,65,15,58,68,207,17
 	xorps	xmm0,xmm3
-	movdqu	xmm3,XMMWORD PTR[32+r8]
+	movdqu	xmm3,XMMWORD[32+r8]
 	movdqa	xmm13,xmm11
 DB	102,68,15,58,68,199,16
 	pshufd	xmm12,xmm11,78
 	xorps	xmm1,xmm5
 	pxor	xmm12,xmm11
 DB	102,65,15,56,0,218
-	movups	xmm7,XMMWORD PTR[32+rdx]
+	movups	xmm7,XMMWORD[32+rdx]
 	xorps	xmm8,xmm4
 DB	102,68,15,58,68,218,0
 	pshufd	xmm4,xmm3,78
@@ -1013,7 +1015,7 @@
 	pslldq	xmm8,8
 	psrldq	xmm9,8
 	pxor	xmm0,xmm8
-	movdqa	xmm8,XMMWORD PTR[$L$7_mask]
+	movdqa	xmm8,XMMWORD[$L$7_mask]
 	pxor	xmm1,xmm9
 DB	102,76,15,110,200
 
@@ -1028,17 +1030,17 @@
 	psrldq	xmm8,8
 	pxor	xmm0,xmm9
 	pxor	xmm1,xmm8
-	movdqu	xmm8,XMMWORD PTR[r8]
+	movdqu	xmm8,XMMWORD[r8]
 
 	movdqa	xmm9,xmm0
 	psrlq	xmm0,1
 DB	102,15,58,68,238,17
 	xorps	xmm3,xmm11
-	movdqu	xmm11,XMMWORD PTR[16+r8]
+	movdqu	xmm11,XMMWORD[16+r8]
 DB	102,69,15,56,0,218
 DB	102,15,58,68,231,16
 	xorps	xmm5,xmm13
-	movups	xmm7,XMMWORD PTR[80+rdx]
+	movups	xmm7,XMMWORD[80+rdx]
 DB	102,69,15,56,0,194
 	pxor	xmm1,xmm9
 	pxor	xmm9,xmm0
@@ -1062,11 +1064,11 @@
 DB	102,68,15,58,68,231,0
 	xorps	xmm5,xmm13
 
-	lea	r8,QWORD PTR[64+r8]
-	sub	r9,040h
-	jnc	$L$mod4_loop
+	lea	r8,[64+r8]
+	sub	r9,0x40
+	jnc	NEAR $L$mod4_loop
 
-$L$tail4x::
+$L$tail4x:
 DB	102,65,15,58,68,199,0
 DB	102,65,15,58,68,207,17
 DB	102,68,15,58,68,199,16
@@ -1107,19 +1109,19 @@
 	pxor	xmm0,xmm4
 	psrlq	xmm0,1
 	pxor	xmm0,xmm1
-	add	r9,040h
-	jz	$L$done
-	movdqu	xmm7,XMMWORD PTR[32+rdx]
-	sub	r9,010h
-	jz	$L$odd_tail
-$L$skip4x::
+	add	r9,0x40
+	jz	NEAR $L$done
+	movdqu	xmm7,XMMWORD[32+rdx]
+	sub	r9,0x10
+	jz	NEAR $L$odd_tail
+$L$skip4x:
 
 
 
 
 
-	movdqu	xmm8,XMMWORD PTR[r8]
-	movdqu	xmm3,XMMWORD PTR[16+r8]
+	movdqu	xmm8,XMMWORD[r8]
+	movdqu	xmm3,XMMWORD[16+r8]
 DB	102,69,15,56,0,194
 DB	102,65,15,56,0,218
 	pxor	xmm0,xmm8
@@ -1131,15 +1133,15 @@
 DB	102,15,58,68,234,17
 DB	102,15,58,68,231,0
 
-	lea	r8,QWORD PTR[32+r8]
+	lea	r8,[32+r8]
 	nop
-	sub	r9,020h
-	jbe	$L$even_tail
+	sub	r9,0x20
+	jbe	NEAR $L$even_tail
 	nop
-	jmp	$L$mod_loop
+	jmp	NEAR $L$mod_loop
 
 ALIGN	32
-$L$mod_loop::
+$L$mod_loop:
 	movdqa	xmm1,xmm0
 	movdqa	xmm8,xmm4
 	pshufd	xmm4,xmm0,78
@@ -1151,10 +1153,10 @@
 
 	pxor	xmm0,xmm3
 	pxor	xmm1,xmm5
-	movdqu	xmm9,XMMWORD PTR[r8]
+	movdqu	xmm9,XMMWORD[r8]
 	pxor	xmm8,xmm0
 DB	102,69,15,56,0,202
-	movdqu	xmm3,XMMWORD PTR[16+r8]
+	movdqu	xmm3,XMMWORD[16+r8]
 
 	pxor	xmm8,xmm1
 	pxor	xmm1,xmm9
@@ -1191,15 +1193,15 @@
 	pxor	xmm9,xmm0
 	psrlq	xmm0,5
 	pxor	xmm0,xmm9
-	lea	r8,QWORD PTR[32+r8]
+	lea	r8,[32+r8]
 	psrlq	xmm0,1
 DB	102,15,58,68,231,0
 	pxor	xmm0,xmm1
 
-	sub	r9,020h
-	ja	$L$mod_loop
+	sub	r9,0x20
+	ja	NEAR $L$mod_loop
 
-$L$even_tail::
+$L$even_tail:
 	movdqa	xmm1,xmm0
 	movdqa	xmm8,xmm4
 	pshufd	xmm4,xmm0,78
@@ -1243,10 +1245,10 @@
 	psrlq	xmm0,1
 	pxor	xmm0,xmm1
 	test	r9,r9
-	jnz	$L$done
+	jnz	NEAR $L$done
 
-$L$odd_tail::
-	movdqu	xmm8,XMMWORD PTR[r8]
+$L$odd_tail:
+	movdqu	xmm8,XMMWORD[r8]
 DB	102,69,15,56,0,194
 	pxor	xmm0,xmm8
 	movdqa	xmm1,xmm0
@@ -1286,101 +1288,101 @@
 	pxor	xmm0,xmm4
 	psrlq	xmm0,1
 	pxor	xmm0,xmm1
-$L$done::
+$L$done:
 DB	102,65,15,56,0,194
-	movdqu	XMMWORD PTR[rcx],xmm0
-	movaps	xmm6,XMMWORD PTR[rsp]
-	movaps	xmm7,XMMWORD PTR[16+rsp]
-	movaps	xmm8,XMMWORD PTR[32+rsp]
-	movaps	xmm9,XMMWORD PTR[48+rsp]
-	movaps	xmm10,XMMWORD PTR[64+rsp]
-	movaps	xmm11,XMMWORD PTR[80+rsp]
-	movaps	xmm12,XMMWORD PTR[96+rsp]
-	movaps	xmm13,XMMWORD PTR[112+rsp]
-	movaps	xmm14,XMMWORD PTR[128+rsp]
-	movaps	xmm15,XMMWORD PTR[144+rsp]
-	lea	rsp,QWORD PTR[168+rsp]
-$L$SEH_end_gcm_ghash_clmul::
+	movdqu	XMMWORD[rcx],xmm0
+	movaps	xmm6,XMMWORD[rsp]
+	movaps	xmm7,XMMWORD[16+rsp]
+	movaps	xmm8,XMMWORD[32+rsp]
+	movaps	xmm9,XMMWORD[48+rsp]
+	movaps	xmm10,XMMWORD[64+rsp]
+	movaps	xmm11,XMMWORD[80+rsp]
+	movaps	xmm12,XMMWORD[96+rsp]
+	movaps	xmm13,XMMWORD[112+rsp]
+	movaps	xmm14,XMMWORD[128+rsp]
+	movaps	xmm15,XMMWORD[144+rsp]
+	lea	rsp,[168+rsp]
+$L$SEH_end_gcm_ghash_clmul:
 	DB	0F3h,0C3h		;repret
-gcm_ghash_clmul	ENDP
-PUBLIC	gcm_init_avx
+
+global	gcm_init_avx
 
 ALIGN	32
-gcm_init_avx	PROC PUBLIC
-	jmp	$L$_init_clmul
-gcm_init_avx	ENDP
-PUBLIC	gcm_gmult_avx
+gcm_init_avx:
+	jmp	NEAR $L$_init_clmul
+
+global	gcm_gmult_avx
 
 ALIGN	32
-gcm_gmult_avx	PROC PUBLIC
-	jmp	$L$_gmult_clmul
-gcm_gmult_avx	ENDP
-PUBLIC	gcm_ghash_avx
+gcm_gmult_avx:
+	jmp	NEAR $L$_gmult_clmul
+
+global	gcm_ghash_avx
 
 ALIGN	32
-gcm_ghash_avx	PROC PUBLIC
-	jmp	$L$_ghash_clmul
-gcm_ghash_avx	ENDP
+gcm_ghash_avx:
+	jmp	NEAR $L$_ghash_clmul
+
 ALIGN	64
-$L$bswap_mask::
+$L$bswap_mask:
 DB	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
-$L$0x1c2_polynomial::
-DB	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0c2h
-$L$7_mask::
+$L$0x1c2_polynomial:
+DB	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
+$L$7_mask:
 	DD	7,0,7,0
-$L$7_mask_poly::
+$L$7_mask_poly:
 	DD	7,0,450,0
 ALIGN	64
 
-$L$rem_4bit::
+$L$rem_4bit:
 	DD	0,0,0,471859200,0,943718400,0,610271232
 	DD	0,1887436800,0,1822425088,0,1220542464,0,1423966208
 	DD	0,3774873600,0,4246732800,0,3644850176,0,3311403008
 	DD	0,2441084928,0,2376073216,0,2847932416,0,3051356160
 
-$L$rem_8bit::
-	DW	00000h,001C2h,00384h,00246h,00708h,006CAh,0048Ch,0054Eh
-	DW	00E10h,00FD2h,00D94h,00C56h,00918h,008DAh,00A9Ch,00B5Eh
-	DW	01C20h,01DE2h,01FA4h,01E66h,01B28h,01AEAh,018ACh,0196Eh
-	DW	01230h,013F2h,011B4h,01076h,01538h,014FAh,016BCh,0177Eh
-	DW	03840h,03982h,03BC4h,03A06h,03F48h,03E8Ah,03CCCh,03D0Eh
-	DW	03650h,03792h,035D4h,03416h,03158h,0309Ah,032DCh,0331Eh
-	DW	02460h,025A2h,027E4h,02626h,02368h,022AAh,020ECh,0212Eh
-	DW	02A70h,02BB2h,029F4h,02836h,02D78h,02CBAh,02EFCh,02F3Eh
-	DW	07080h,07142h,07304h,072C6h,07788h,0764Ah,0740Ch,075CEh
-	DW	07E90h,07F52h,07D14h,07CD6h,07998h,0785Ah,07A1Ch,07BDEh
-	DW	06CA0h,06D62h,06F24h,06EE6h,06BA8h,06A6Ah,0682Ch,069EEh
-	DW	062B0h,06372h,06134h,060F6h,065B8h,0647Ah,0663Ch,067FEh
-	DW	048C0h,04902h,04B44h,04A86h,04FC8h,04E0Ah,04C4Ch,04D8Eh
-	DW	046D0h,04712h,04554h,04496h,041D8h,0401Ah,0425Ch,0439Eh
-	DW	054E0h,05522h,05764h,056A6h,053E8h,0522Ah,0506Ch,051AEh
-	DW	05AF0h,05B32h,05974h,058B6h,05DF8h,05C3Ah,05E7Ch,05FBEh
-	DW	0E100h,0E0C2h,0E284h,0E346h,0E608h,0E7CAh,0E58Ch,0E44Eh
-	DW	0EF10h,0EED2h,0EC94h,0ED56h,0E818h,0E9DAh,0EB9Ch,0EA5Eh
-	DW	0FD20h,0FCE2h,0FEA4h,0FF66h,0FA28h,0FBEAh,0F9ACh,0F86Eh
-	DW	0F330h,0F2F2h,0F0B4h,0F176h,0F438h,0F5FAh,0F7BCh,0F67Eh
-	DW	0D940h,0D882h,0DAC4h,0DB06h,0DE48h,0DF8Ah,0DDCCh,0DC0Eh
-	DW	0D750h,0D692h,0D4D4h,0D516h,0D058h,0D19Ah,0D3DCh,0D21Eh
-	DW	0C560h,0C4A2h,0C6E4h,0C726h,0C268h,0C3AAh,0C1ECh,0C02Eh
-	DW	0CB70h,0CAB2h,0C8F4h,0C936h,0CC78h,0CDBAh,0CFFCh,0CE3Eh
-	DW	09180h,09042h,09204h,093C6h,09688h,0974Ah,0950Ch,094CEh
-	DW	09F90h,09E52h,09C14h,09DD6h,09898h,0995Ah,09B1Ch,09ADEh
-	DW	08DA0h,08C62h,08E24h,08FE6h,08AA8h,08B6Ah,0892Ch,088EEh
-	DW	083B0h,08272h,08034h,081F6h,084B8h,0857Ah,0873Ch,086FEh
-	DW	0A9C0h,0A802h,0AA44h,0AB86h,0AEC8h,0AF0Ah,0AD4Ch,0AC8Eh
-	DW	0A7D0h,0A612h,0A454h,0A596h,0A0D8h,0A11Ah,0A35Ch,0A29Eh
-	DW	0B5E0h,0B422h,0B664h,0B7A6h,0B2E8h,0B32Ah,0B16Ch,0B0AEh
-	DW	0BBF0h,0BA32h,0B874h,0B9B6h,0BCF8h,0BD3Ah,0BF7Ch,0BEBEh
+$L$rem_8bit:
+	DW	0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E
+	DW	0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E
+	DW	0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E
+	DW	0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E
+	DW	0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E
+	DW	0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E
+	DW	0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E
+	DW	0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E
+	DW	0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE
+	DW	0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE
+	DW	0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE
+	DW	0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE
+	DW	0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E
+	DW	0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E
+	DW	0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE
+	DW	0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE
+	DW	0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E
+	DW	0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E
+	DW	0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E
+	DW	0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E
+	DW	0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E
+	DW	0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E
+	DW	0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E
+	DW	0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E
+	DW	0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE
+	DW	0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE
+	DW	0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE
+	DW	0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE
+	DW	0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E
+	DW	0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E
+	DW	0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE
+	DW	0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE
 
 DB	71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52
 DB	44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
 DB	60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
 DB	114,103,62,0
 ALIGN	64
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1392,58 +1394,58 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	lea	rax,QWORD PTR[24+rax]
+	lea	rax,[24+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -1457,54 +1459,49 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_gcm_gmult_4bit
-	DD	imagerel $L$SEH_end_gcm_gmult_4bit
-	DD	imagerel $L$SEH_info_gcm_gmult_4bit
+	DD	$L$SEH_begin_gcm_gmult_4bit wrt ..imagebase
+	DD	$L$SEH_end_gcm_gmult_4bit wrt ..imagebase
+	DD	$L$SEH_info_gcm_gmult_4bit wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_gcm_ghash_4bit
-	DD	imagerel $L$SEH_end_gcm_ghash_4bit
-	DD	imagerel $L$SEH_info_gcm_ghash_4bit
+	DD	$L$SEH_begin_gcm_ghash_4bit wrt ..imagebase
+	DD	$L$SEH_end_gcm_ghash_4bit wrt ..imagebase
+	DD	$L$SEH_info_gcm_ghash_4bit wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_gcm_init_clmul
-	DD	imagerel $L$SEH_end_gcm_init_clmul
-	DD	imagerel $L$SEH_info_gcm_init_clmul
+	DD	$L$SEH_begin_gcm_init_clmul wrt ..imagebase
+	DD	$L$SEH_end_gcm_init_clmul wrt ..imagebase
+	DD	$L$SEH_info_gcm_init_clmul wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_gcm_ghash_clmul
-	DD	imagerel $L$SEH_end_gcm_ghash_clmul
-	DD	imagerel $L$SEH_info_gcm_ghash_clmul
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+	DD	$L$SEH_begin_gcm_ghash_clmul wrt ..imagebase
+	DD	$L$SEH_end_gcm_ghash_clmul wrt ..imagebase
+	DD	$L$SEH_info_gcm_ghash_clmul wrt ..imagebase
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_gcm_gmult_4bit::
+$L$SEH_info_gcm_gmult_4bit:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$gmult_prologue,imagerel $L$gmult_epilogue
-$L$SEH_info_gcm_ghash_4bit::
+	DD	se_handler wrt ..imagebase
+	DD	$L$gmult_prologue wrt ..imagebase,$L$gmult_epilogue wrt ..imagebase
+$L$SEH_info_gcm_ghash_4bit:
 DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$ghash_prologue,imagerel $L$ghash_epilogue
-$L$SEH_info_gcm_init_clmul::
-DB	001h,008h,003h,000h
-DB	008h,068h,000h,000h
-DB	004h,022h,000h,000h
-$L$SEH_info_gcm_ghash_clmul::
-DB	001h,033h,016h,000h
-DB	033h,0f8h,009h,000h
-DB	02eh,0e8h,008h,000h
-DB	029h,0d8h,007h,000h
-DB	024h,0c8h,006h,000h
-DB	01fh,0b8h,005h,000h
-DB	01ah,0a8h,004h,000h
-DB	015h,098h,003h,000h
-DB	010h,088h,002h,000h
-DB	00ch,078h,001h,000h
-DB	008h,068h,000h,000h
-DB	004h,001h,015h,000h
-
-.xdata	ENDS
-END
+	DD	se_handler wrt ..imagebase
+	DD	$L$ghash_prologue wrt ..imagebase,$L$ghash_epilogue wrt ..imagebase
+$L$SEH_info_gcm_init_clmul:
+DB	0x01,0x08,0x03,0x00
+DB	0x08,0x68,0x00,0x00
+DB	0x04,0x22,0x00,0x00
+$L$SEH_info_gcm_ghash_clmul:
+DB	0x01,0x33,0x16,0x00
+DB	0x33,0xf8,0x09,0x00
+DB	0x2e,0xe8,0x08,0x00
+DB	0x29,0xd8,0x07,0x00
+DB	0x24,0xc8,0x06,0x00
+DB	0x1f,0xb8,0x05,0x00
+DB	0x1a,0xa8,0x04,0x00
+DB	0x15,0x98,0x03,0x00
+DB	0x10,0x88,0x02,0x00
+DB	0x0c,0x78,0x01,0x00
+DB	0x08,0x68,0x00,0x00
+DB	0x04,0x01,0x15,0x00
diff --git a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-md5-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/rc4/rc4-md5-x86_64.asm
index 9d823ae..f1ea965 100644
--- a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-md5-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/rc4/rc4-md5-x86_64.asm
@@ -1,24 +1,28 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
+
 ALIGN	16
 
-PUBLIC	rc4_md5_enc
+global	rc4_md5_enc
 
-rc4_md5_enc	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+rc4_md5_enc:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_rc4_md5_enc::
+$L$SEH_begin_rc4_md5_enc:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 	mov	rcx,r9
-	mov	r8,QWORD PTR[40+rsp]
-	mov	r9,QWORD PTR[48+rsp]
+	mov	r8,QWORD[40+rsp]
+	mov	r9,QWORD[48+rsp]
 
 
 	cmp	r9,0
-	je	$L$abort
+	je	NEAR $L$abort
 	push	rbx
 	push	rbp
 	push	r12
@@ -26,7 +30,7 @@
 	push	r14
 	push	r15
 	sub	rsp,40
-$L$body::
+$L$body:
 	mov	r11,rcx
 	mov	r12,r9
 	mov	r13,rsi
@@ -35,1194 +39,1194 @@
 	xor	rbp,rbp
 	xor	rcx,rcx
 
-	lea	rdi,QWORD PTR[8+rdi]
-	mov	bpl,BYTE PTR[((-8))+rdi]
-	mov	cl,BYTE PTR[((-4))+rdi]
+	lea	rdi,[8+rdi]
+	mov	bpl,BYTE[((-8))+rdi]
+	mov	cl,BYTE[((-4))+rdi]
 
 	inc	bpl
 	sub	r14,r13
-	mov	eax,DWORD PTR[rbp*4+rdi]
+	mov	eax,DWORD[rbp*4+rdi]
 	add	cl,al
-	lea	rsi,QWORD PTR[rbp*4+rdi]
+	lea	rsi,[rbp*4+rdi]
 	shl	r12,6
 	add	r12,r15
-	mov	QWORD PTR[16+rsp],r12
+	mov	QWORD[16+rsp],r12
 
-	mov	QWORD PTR[24+rsp],r11
-	mov	r8d,DWORD PTR[r11]
-	mov	r9d,DWORD PTR[4+r11]
-	mov	r10d,DWORD PTR[8+r11]
-	mov	r11d,DWORD PTR[12+r11]
-	jmp	$L$oop
+	mov	QWORD[24+rsp],r11
+	mov	r8d,DWORD[r11]
+	mov	r9d,DWORD[4+r11]
+	mov	r10d,DWORD[8+r11]
+	mov	r11d,DWORD[12+r11]
+	jmp	NEAR $L$oop
 
 ALIGN	16
-$L$oop::
-	mov	DWORD PTR[rsp],r8d
-	mov	DWORD PTR[4+rsp],r9d
-	mov	DWORD PTR[8+rsp],r10d
+$L$oop:
+	mov	DWORD[rsp],r8d
+	mov	DWORD[4+rsp],r9d
+	mov	DWORD[8+rsp],r10d
 	mov	r12d,r11d
-	mov	DWORD PTR[12+rsp],r11d
+	mov	DWORD[12+rsp],r11d
 	pxor	xmm0,xmm0
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r8d,DWORD PTR[r15]
+	add	r8d,DWORD[r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[4+rsi]
+	mov	ebx,DWORD[4+rsi]
 	add	r8d,3614090360
 	xor	r12d,r11d
 	movzx	eax,al
-	mov	DWORD PTR[rsi],edx
+	mov	DWORD[rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,7
 	mov	r12d,r10d
-	movd	xmm0,DWORD PTR[rax*4+rdi]
+	movd	xmm0,DWORD[rax*4+rdi]
 
 	add	r8d,r9d
 	pxor	xmm1,xmm1
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r11d,DWORD PTR[4+r15]
+	add	r11d,DWORD[4+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[8+rsi]
+	mov	eax,DWORD[8+rsi]
 	add	r11d,3905402710
 	xor	r12d,r10d
 	movzx	ebx,bl
-	mov	DWORD PTR[4+rsi],edx
+	mov	DWORD[4+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,12
 	mov	r12d,r9d
-	movd	xmm1,DWORD PTR[rbx*4+rdi]
+	movd	xmm1,DWORD[rbx*4+rdi]
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r10d,DWORD PTR[8+r15]
+	add	r10d,DWORD[8+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[12+rsi]
+	mov	ebx,DWORD[12+rsi]
 	add	r10d,606105819
 	xor	r12d,r9d
 	movzx	eax,al
-	mov	DWORD PTR[8+rsi],edx
+	mov	DWORD[8+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,17
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],1
+	pinsrw	xmm0,WORD[rax*4+rdi],1
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r9d,DWORD PTR[12+r15]
+	add	r9d,DWORD[12+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[16+rsi]
+	mov	eax,DWORD[16+rsi]
 	add	r9d,3250441966
 	xor	r12d,r8d
 	movzx	ebx,bl
-	mov	DWORD PTR[12+rsi],edx
+	mov	DWORD[12+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,22
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],1
+	pinsrw	xmm1,WORD[rbx*4+rdi],1
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r8d,DWORD PTR[16+r15]
+	add	r8d,DWORD[16+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[20+rsi]
+	mov	ebx,DWORD[20+rsi]
 	add	r8d,4118548399
 	xor	r12d,r11d
 	movzx	eax,al
-	mov	DWORD PTR[16+rsi],edx
+	mov	DWORD[16+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,7
 	mov	r12d,r10d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],2
+	pinsrw	xmm0,WORD[rax*4+rdi],2
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r11d,DWORD PTR[20+r15]
+	add	r11d,DWORD[20+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[24+rsi]
+	mov	eax,DWORD[24+rsi]
 	add	r11d,1200080426
 	xor	r12d,r10d
 	movzx	ebx,bl
-	mov	DWORD PTR[20+rsi],edx
+	mov	DWORD[20+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,12
 	mov	r12d,r9d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],2
+	pinsrw	xmm1,WORD[rbx*4+rdi],2
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r10d,DWORD PTR[24+r15]
+	add	r10d,DWORD[24+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[28+rsi]
+	mov	ebx,DWORD[28+rsi]
 	add	r10d,2821735955
 	xor	r12d,r9d
 	movzx	eax,al
-	mov	DWORD PTR[24+rsi],edx
+	mov	DWORD[24+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,17
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],3
+	pinsrw	xmm0,WORD[rax*4+rdi],3
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r9d,DWORD PTR[28+r15]
+	add	r9d,DWORD[28+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[32+rsi]
+	mov	eax,DWORD[32+rsi]
 	add	r9d,4249261313
 	xor	r12d,r8d
 	movzx	ebx,bl
-	mov	DWORD PTR[28+rsi],edx
+	mov	DWORD[28+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,22
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],3
+	pinsrw	xmm1,WORD[rbx*4+rdi],3
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r8d,DWORD PTR[32+r15]
+	add	r8d,DWORD[32+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[36+rsi]
+	mov	ebx,DWORD[36+rsi]
 	add	r8d,1770035416
 	xor	r12d,r11d
 	movzx	eax,al
-	mov	DWORD PTR[32+rsi],edx
+	mov	DWORD[32+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,7
 	mov	r12d,r10d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],4
+	pinsrw	xmm0,WORD[rax*4+rdi],4
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r11d,DWORD PTR[36+r15]
+	add	r11d,DWORD[36+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[40+rsi]
+	mov	eax,DWORD[40+rsi]
 	add	r11d,2336552879
 	xor	r12d,r10d
 	movzx	ebx,bl
-	mov	DWORD PTR[36+rsi],edx
+	mov	DWORD[36+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,12
 	mov	r12d,r9d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],4
+	pinsrw	xmm1,WORD[rbx*4+rdi],4
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r10d,DWORD PTR[40+r15]
+	add	r10d,DWORD[40+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[44+rsi]
+	mov	ebx,DWORD[44+rsi]
 	add	r10d,4294925233
 	xor	r12d,r9d
 	movzx	eax,al
-	mov	DWORD PTR[40+rsi],edx
+	mov	DWORD[40+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,17
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],5
+	pinsrw	xmm0,WORD[rax*4+rdi],5
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r9d,DWORD PTR[44+r15]
+	add	r9d,DWORD[44+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[48+rsi]
+	mov	eax,DWORD[48+rsi]
 	add	r9d,2304563134
 	xor	r12d,r8d
 	movzx	ebx,bl
-	mov	DWORD PTR[44+rsi],edx
+	mov	DWORD[44+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,22
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],5
+	pinsrw	xmm1,WORD[rbx*4+rdi],5
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r8d,DWORD PTR[48+r15]
+	add	r8d,DWORD[48+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[52+rsi]
+	mov	ebx,DWORD[52+rsi]
 	add	r8d,1804603682
 	xor	r12d,r11d
 	movzx	eax,al
-	mov	DWORD PTR[48+rsi],edx
+	mov	DWORD[48+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,7
 	mov	r12d,r10d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],6
+	pinsrw	xmm0,WORD[rax*4+rdi],6
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r11d,DWORD PTR[52+r15]
+	add	r11d,DWORD[52+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[56+rsi]
+	mov	eax,DWORD[56+rsi]
 	add	r11d,4254626195
 	xor	r12d,r10d
 	movzx	ebx,bl
-	mov	DWORD PTR[52+rsi],edx
+	mov	DWORD[52+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,12
 	mov	r12d,r9d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],6
+	pinsrw	xmm1,WORD[rbx*4+rdi],6
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r10d,DWORD PTR[56+r15]
+	add	r10d,DWORD[56+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[60+rsi]
+	mov	ebx,DWORD[60+rsi]
 	add	r10d,2792965006
 	xor	r12d,r9d
 	movzx	eax,al
-	mov	DWORD PTR[56+rsi],edx
+	mov	DWORD[56+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,17
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],7
+	pinsrw	xmm0,WORD[rax*4+rdi],7
 
 	add	r10d,r11d
-	movdqu	xmm2,XMMWORD PTR[r13]
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	movdqu	xmm2,XMMWORD[r13]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r9d,DWORD PTR[60+r15]
+	add	r9d,DWORD[60+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[64+rsi]
+	mov	eax,DWORD[64+rsi]
 	add	r9d,1236535329
 	xor	r12d,r8d
 	movzx	ebx,bl
-	mov	DWORD PTR[60+rsi],edx
+	mov	DWORD[60+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,22
 	mov	r12d,r10d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],7
+	pinsrw	xmm1,WORD[rbx*4+rdi],7
 
 	add	r9d,r10d
 	psllq	xmm1,8
 	pxor	xmm2,xmm0
 	pxor	xmm2,xmm1
 	pxor	xmm0,xmm0
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r8d,DWORD PTR[4+r15]
+	add	r8d,DWORD[4+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[68+rsi]
+	mov	ebx,DWORD[68+rsi]
 	add	r8d,4129170786
 	xor	r12d,r10d
 	movzx	eax,al
-	mov	DWORD PTR[64+rsi],edx
+	mov	DWORD[64+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,5
 	mov	r12d,r9d
-	movd	xmm0,DWORD PTR[rax*4+rdi]
+	movd	xmm0,DWORD[rax*4+rdi]
 
 	add	r8d,r9d
 	pxor	xmm1,xmm1
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r11d,DWORD PTR[24+r15]
+	add	r11d,DWORD[24+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[72+rsi]
+	mov	eax,DWORD[72+rsi]
 	add	r11d,3225465664
 	xor	r12d,r9d
 	movzx	ebx,bl
-	mov	DWORD PTR[68+rsi],edx
+	mov	DWORD[68+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,9
 	mov	r12d,r8d
-	movd	xmm1,DWORD PTR[rbx*4+rdi]
+	movd	xmm1,DWORD[rbx*4+rdi]
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r10d,DWORD PTR[44+r15]
+	add	r10d,DWORD[44+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[76+rsi]
+	mov	ebx,DWORD[76+rsi]
 	add	r10d,643717713
 	xor	r12d,r8d
 	movzx	eax,al
-	mov	DWORD PTR[72+rsi],edx
+	mov	DWORD[72+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,14
 	mov	r12d,r11d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],1
+	pinsrw	xmm0,WORD[rax*4+rdi],1
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r9d,DWORD PTR[r15]
+	add	r9d,DWORD[r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[80+rsi]
+	mov	eax,DWORD[80+rsi]
 	add	r9d,3921069994
 	xor	r12d,r11d
 	movzx	ebx,bl
-	mov	DWORD PTR[76+rsi],edx
+	mov	DWORD[76+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,20
 	mov	r12d,r10d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],1
+	pinsrw	xmm1,WORD[rbx*4+rdi],1
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r8d,DWORD PTR[20+r15]
+	add	r8d,DWORD[20+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[84+rsi]
+	mov	ebx,DWORD[84+rsi]
 	add	r8d,3593408605
 	xor	r12d,r10d
 	movzx	eax,al
-	mov	DWORD PTR[80+rsi],edx
+	mov	DWORD[80+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,5
 	mov	r12d,r9d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],2
+	pinsrw	xmm0,WORD[rax*4+rdi],2
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r11d,DWORD PTR[40+r15]
+	add	r11d,DWORD[40+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[88+rsi]
+	mov	eax,DWORD[88+rsi]
 	add	r11d,38016083
 	xor	r12d,r9d
 	movzx	ebx,bl
-	mov	DWORD PTR[84+rsi],edx
+	mov	DWORD[84+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,9
 	mov	r12d,r8d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],2
+	pinsrw	xmm1,WORD[rbx*4+rdi],2
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r10d,DWORD PTR[60+r15]
+	add	r10d,DWORD[60+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[92+rsi]
+	mov	ebx,DWORD[92+rsi]
 	add	r10d,3634488961
 	xor	r12d,r8d
 	movzx	eax,al
-	mov	DWORD PTR[88+rsi],edx
+	mov	DWORD[88+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,14
 	mov	r12d,r11d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],3
+	pinsrw	xmm0,WORD[rax*4+rdi],3
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r9d,DWORD PTR[16+r15]
+	add	r9d,DWORD[16+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[96+rsi]
+	mov	eax,DWORD[96+rsi]
 	add	r9d,3889429448
 	xor	r12d,r11d
 	movzx	ebx,bl
-	mov	DWORD PTR[92+rsi],edx
+	mov	DWORD[92+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,20
 	mov	r12d,r10d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],3
+	pinsrw	xmm1,WORD[rbx*4+rdi],3
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r8d,DWORD PTR[36+r15]
+	add	r8d,DWORD[36+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[100+rsi]
+	mov	ebx,DWORD[100+rsi]
 	add	r8d,568446438
 	xor	r12d,r10d
 	movzx	eax,al
-	mov	DWORD PTR[96+rsi],edx
+	mov	DWORD[96+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,5
 	mov	r12d,r9d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],4
+	pinsrw	xmm0,WORD[rax*4+rdi],4
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r11d,DWORD PTR[56+r15]
+	add	r11d,DWORD[56+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[104+rsi]
+	mov	eax,DWORD[104+rsi]
 	add	r11d,3275163606
 	xor	r12d,r9d
 	movzx	ebx,bl
-	mov	DWORD PTR[100+rsi],edx
+	mov	DWORD[100+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,9
 	mov	r12d,r8d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],4
+	pinsrw	xmm1,WORD[rbx*4+rdi],4
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r10d,DWORD PTR[12+r15]
+	add	r10d,DWORD[12+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[108+rsi]
+	mov	ebx,DWORD[108+rsi]
 	add	r10d,4107603335
 	xor	r12d,r8d
 	movzx	eax,al
-	mov	DWORD PTR[104+rsi],edx
+	mov	DWORD[104+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,14
 	mov	r12d,r11d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],5
+	pinsrw	xmm0,WORD[rax*4+rdi],5
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r9d,DWORD PTR[32+r15]
+	add	r9d,DWORD[32+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[112+rsi]
+	mov	eax,DWORD[112+rsi]
 	add	r9d,1163531501
 	xor	r12d,r11d
 	movzx	ebx,bl
-	mov	DWORD PTR[108+rsi],edx
+	mov	DWORD[108+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,20
 	mov	r12d,r10d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],5
+	pinsrw	xmm1,WORD[rbx*4+rdi],5
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r11d
-	add	r8d,DWORD PTR[52+r15]
+	add	r8d,DWORD[52+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[116+rsi]
+	mov	ebx,DWORD[116+rsi]
 	add	r8d,2850285829
 	xor	r12d,r10d
 	movzx	eax,al
-	mov	DWORD PTR[112+rsi],edx
+	mov	DWORD[112+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,5
 	mov	r12d,r9d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],6
+	pinsrw	xmm0,WORD[rax*4+rdi],6
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r10d
-	add	r11d,DWORD PTR[8+r15]
+	add	r11d,DWORD[8+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[120+rsi]
+	mov	eax,DWORD[120+rsi]
 	add	r11d,4243563512
 	xor	r12d,r9d
 	movzx	ebx,bl
-	mov	DWORD PTR[116+rsi],edx
+	mov	DWORD[116+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,9
 	mov	r12d,r8d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],6
+	pinsrw	xmm1,WORD[rbx*4+rdi],6
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	and	r12d,r9d
-	add	r10d,DWORD PTR[28+r15]
+	add	r10d,DWORD[28+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[124+rsi]
+	mov	ebx,DWORD[124+rsi]
 	add	r10d,1735328473
 	xor	r12d,r8d
 	movzx	eax,al
-	mov	DWORD PTR[120+rsi],edx
+	mov	DWORD[120+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,14
 	mov	r12d,r11d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],7
+	pinsrw	xmm0,WORD[rax*4+rdi],7
 
 	add	r10d,r11d
-	movdqu	xmm3,XMMWORD PTR[16+r13]
+	movdqu	xmm3,XMMWORD[16+r13]
 	add	bpl,32
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	and	r12d,r8d
-	add	r9d,DWORD PTR[48+r15]
+	add	r9d,DWORD[48+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[rbp*4+rdi]
+	mov	eax,DWORD[rbp*4+rdi]
 	add	r9d,2368359562
 	xor	r12d,r11d
 	movzx	ebx,bl
-	mov	DWORD PTR[124+rsi],edx
+	mov	DWORD[124+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,20
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],7
+	pinsrw	xmm1,WORD[rbx*4+rdi],7
 
 	add	r9d,r10d
 	mov	rsi,rcx
 	xor	rcx,rcx
 	mov	cl,sil
-	lea	rsi,QWORD PTR[rbp*4+rdi]
+	lea	rsi,[rbp*4+rdi]
 	psllq	xmm1,8
 	pxor	xmm3,xmm0
 	pxor	xmm3,xmm1
 	pxor	xmm0,xmm0
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r9d
-	add	r8d,DWORD PTR[20+r15]
+	add	r8d,DWORD[20+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[4+rsi]
+	mov	ebx,DWORD[4+rsi]
 	add	r8d,4294588738
 	movzx	eax,al
 	add	r8d,r12d
-	mov	DWORD PTR[rsi],edx
+	mov	DWORD[rsi],edx
 	add	cl,bl
 	rol	r8d,4
 	mov	r12d,r10d
-	movd	xmm0,DWORD PTR[rax*4+rdi]
+	movd	xmm0,DWORD[rax*4+rdi]
 
 	add	r8d,r9d
 	pxor	xmm1,xmm1
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r8d
-	add	r11d,DWORD PTR[32+r15]
+	add	r11d,DWORD[32+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[8+rsi]
+	mov	eax,DWORD[8+rsi]
 	add	r11d,2272392833
 	movzx	ebx,bl
 	add	r11d,r12d
-	mov	DWORD PTR[4+rsi],edx
+	mov	DWORD[4+rsi],edx
 	add	cl,al
 	rol	r11d,11
 	mov	r12d,r9d
-	movd	xmm1,DWORD PTR[rbx*4+rdi]
+	movd	xmm1,DWORD[rbx*4+rdi]
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r11d
-	add	r10d,DWORD PTR[44+r15]
+	add	r10d,DWORD[44+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[12+rsi]
+	mov	ebx,DWORD[12+rsi]
 	add	r10d,1839030562
 	movzx	eax,al
 	add	r10d,r12d
-	mov	DWORD PTR[8+rsi],edx
+	mov	DWORD[8+rsi],edx
 	add	cl,bl
 	rol	r10d,16
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],1
+	pinsrw	xmm0,WORD[rax*4+rdi],1
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r10d
-	add	r9d,DWORD PTR[56+r15]
+	add	r9d,DWORD[56+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[16+rsi]
+	mov	eax,DWORD[16+rsi]
 	add	r9d,4259657740
 	movzx	ebx,bl
 	add	r9d,r12d
-	mov	DWORD PTR[12+rsi],edx
+	mov	DWORD[12+rsi],edx
 	add	cl,al
 	rol	r9d,23
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],1
+	pinsrw	xmm1,WORD[rbx*4+rdi],1
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r9d
-	add	r8d,DWORD PTR[4+r15]
+	add	r8d,DWORD[4+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[20+rsi]
+	mov	ebx,DWORD[20+rsi]
 	add	r8d,2763975236
 	movzx	eax,al
 	add	r8d,r12d
-	mov	DWORD PTR[16+rsi],edx
+	mov	DWORD[16+rsi],edx
 	add	cl,bl
 	rol	r8d,4
 	mov	r12d,r10d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],2
+	pinsrw	xmm0,WORD[rax*4+rdi],2
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r8d
-	add	r11d,DWORD PTR[16+r15]
+	add	r11d,DWORD[16+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[24+rsi]
+	mov	eax,DWORD[24+rsi]
 	add	r11d,1272893353
 	movzx	ebx,bl
 	add	r11d,r12d
-	mov	DWORD PTR[20+rsi],edx
+	mov	DWORD[20+rsi],edx
 	add	cl,al
 	rol	r11d,11
 	mov	r12d,r9d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],2
+	pinsrw	xmm1,WORD[rbx*4+rdi],2
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r11d
-	add	r10d,DWORD PTR[28+r15]
+	add	r10d,DWORD[28+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[28+rsi]
+	mov	ebx,DWORD[28+rsi]
 	add	r10d,4139469664
 	movzx	eax,al
 	add	r10d,r12d
-	mov	DWORD PTR[24+rsi],edx
+	mov	DWORD[24+rsi],edx
 	add	cl,bl
 	rol	r10d,16
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],3
+	pinsrw	xmm0,WORD[rax*4+rdi],3
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r10d
-	add	r9d,DWORD PTR[40+r15]
+	add	r9d,DWORD[40+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[32+rsi]
+	mov	eax,DWORD[32+rsi]
 	add	r9d,3200236656
 	movzx	ebx,bl
 	add	r9d,r12d
-	mov	DWORD PTR[28+rsi],edx
+	mov	DWORD[28+rsi],edx
 	add	cl,al
 	rol	r9d,23
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],3
+	pinsrw	xmm1,WORD[rbx*4+rdi],3
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r9d
-	add	r8d,DWORD PTR[52+r15]
+	add	r8d,DWORD[52+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[36+rsi]
+	mov	ebx,DWORD[36+rsi]
 	add	r8d,681279174
 	movzx	eax,al
 	add	r8d,r12d
-	mov	DWORD PTR[32+rsi],edx
+	mov	DWORD[32+rsi],edx
 	add	cl,bl
 	rol	r8d,4
 	mov	r12d,r10d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],4
+	pinsrw	xmm0,WORD[rax*4+rdi],4
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r8d
-	add	r11d,DWORD PTR[r15]
+	add	r11d,DWORD[r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[40+rsi]
+	mov	eax,DWORD[40+rsi]
 	add	r11d,3936430074
 	movzx	ebx,bl
 	add	r11d,r12d
-	mov	DWORD PTR[36+rsi],edx
+	mov	DWORD[36+rsi],edx
 	add	cl,al
 	rol	r11d,11
 	mov	r12d,r9d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],4
+	pinsrw	xmm1,WORD[rbx*4+rdi],4
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r11d
-	add	r10d,DWORD PTR[12+r15]
+	add	r10d,DWORD[12+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[44+rsi]
+	mov	ebx,DWORD[44+rsi]
 	add	r10d,3572445317
 	movzx	eax,al
 	add	r10d,r12d
-	mov	DWORD PTR[40+rsi],edx
+	mov	DWORD[40+rsi],edx
 	add	cl,bl
 	rol	r10d,16
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],5
+	pinsrw	xmm0,WORD[rax*4+rdi],5
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r10d
-	add	r9d,DWORD PTR[24+r15]
+	add	r9d,DWORD[24+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[48+rsi]
+	mov	eax,DWORD[48+rsi]
 	add	r9d,76029189
 	movzx	ebx,bl
 	add	r9d,r12d
-	mov	DWORD PTR[44+rsi],edx
+	mov	DWORD[44+rsi],edx
 	add	cl,al
 	rol	r9d,23
 	mov	r12d,r11d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],5
+	pinsrw	xmm1,WORD[rbx*4+rdi],5
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r9d
-	add	r8d,DWORD PTR[36+r15]
+	add	r8d,DWORD[36+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[52+rsi]
+	mov	ebx,DWORD[52+rsi]
 	add	r8d,3654602809
 	movzx	eax,al
 	add	r8d,r12d
-	mov	DWORD PTR[48+rsi],edx
+	mov	DWORD[48+rsi],edx
 	add	cl,bl
 	rol	r8d,4
 	mov	r12d,r10d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],6
+	pinsrw	xmm0,WORD[rax*4+rdi],6
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r8d
-	add	r11d,DWORD PTR[48+r15]
+	add	r11d,DWORD[48+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[56+rsi]
+	mov	eax,DWORD[56+rsi]
 	add	r11d,3873151461
 	movzx	ebx,bl
 	add	r11d,r12d
-	mov	DWORD PTR[52+rsi],edx
+	mov	DWORD[52+rsi],edx
 	add	cl,al
 	rol	r11d,11
 	mov	r12d,r9d
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],6
+	pinsrw	xmm1,WORD[rbx*4+rdi],6
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	xor	r12d,r11d
-	add	r10d,DWORD PTR[60+r15]
+	add	r10d,DWORD[60+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[60+rsi]
+	mov	ebx,DWORD[60+rsi]
 	add	r10d,530742520
 	movzx	eax,al
 	add	r10d,r12d
-	mov	DWORD PTR[56+rsi],edx
+	mov	DWORD[56+rsi],edx
 	add	cl,bl
 	rol	r10d,16
 	mov	r12d,r8d
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],7
+	pinsrw	xmm0,WORD[rax*4+rdi],7
 
 	add	r10d,r11d
-	movdqu	xmm4,XMMWORD PTR[32+r13]
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	movdqu	xmm4,XMMWORD[32+r13]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	xor	r12d,r10d
-	add	r9d,DWORD PTR[8+r15]
+	add	r9d,DWORD[8+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[64+rsi]
+	mov	eax,DWORD[64+rsi]
 	add	r9d,3299628645
 	movzx	ebx,bl
 	add	r9d,r12d
-	mov	DWORD PTR[60+rsi],edx
+	mov	DWORD[60+rsi],edx
 	add	cl,al
 	rol	r9d,23
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],7
+	pinsrw	xmm1,WORD[rbx*4+rdi],7
 
 	add	r9d,r10d
 	psllq	xmm1,8
 	pxor	xmm4,xmm0
 	pxor	xmm4,xmm1
 	pxor	xmm0,xmm0
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r9d
-	add	r8d,DWORD PTR[r15]
+	add	r8d,DWORD[r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[68+rsi]
+	mov	ebx,DWORD[68+rsi]
 	add	r8d,4096336452
 	movzx	eax,al
 	xor	r12d,r10d
-	mov	DWORD PTR[64+rsi],edx
+	mov	DWORD[64+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,6
 	mov	r12d,-1
-	movd	xmm0,DWORD PTR[rax*4+rdi]
+	movd	xmm0,DWORD[rax*4+rdi]
 
 	add	r8d,r9d
 	pxor	xmm1,xmm1
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r8d
-	add	r11d,DWORD PTR[28+r15]
+	add	r11d,DWORD[28+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[72+rsi]
+	mov	eax,DWORD[72+rsi]
 	add	r11d,1126891415
 	movzx	ebx,bl
 	xor	r12d,r9d
-	mov	DWORD PTR[68+rsi],edx
+	mov	DWORD[68+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,10
 	mov	r12d,-1
-	movd	xmm1,DWORD PTR[rbx*4+rdi]
+	movd	xmm1,DWORD[rbx*4+rdi]
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r11d
-	add	r10d,DWORD PTR[56+r15]
+	add	r10d,DWORD[56+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[76+rsi]
+	mov	ebx,DWORD[76+rsi]
 	add	r10d,2878612391
 	movzx	eax,al
 	xor	r12d,r8d
-	mov	DWORD PTR[72+rsi],edx
+	mov	DWORD[72+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,15
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],1
+	pinsrw	xmm0,WORD[rax*4+rdi],1
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r10d
-	add	r9d,DWORD PTR[20+r15]
+	add	r9d,DWORD[20+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[80+rsi]
+	mov	eax,DWORD[80+rsi]
 	add	r9d,4237533241
 	movzx	ebx,bl
 	xor	r12d,r11d
-	mov	DWORD PTR[76+rsi],edx
+	mov	DWORD[76+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,21
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],1
+	pinsrw	xmm1,WORD[rbx*4+rdi],1
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r9d
-	add	r8d,DWORD PTR[48+r15]
+	add	r8d,DWORD[48+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[84+rsi]
+	mov	ebx,DWORD[84+rsi]
 	add	r8d,1700485571
 	movzx	eax,al
 	xor	r12d,r10d
-	mov	DWORD PTR[80+rsi],edx
+	mov	DWORD[80+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,6
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],2
+	pinsrw	xmm0,WORD[rax*4+rdi],2
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r8d
-	add	r11d,DWORD PTR[12+r15]
+	add	r11d,DWORD[12+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[88+rsi]
+	mov	eax,DWORD[88+rsi]
 	add	r11d,2399980690
 	movzx	ebx,bl
 	xor	r12d,r9d
-	mov	DWORD PTR[84+rsi],edx
+	mov	DWORD[84+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,10
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],2
+	pinsrw	xmm1,WORD[rbx*4+rdi],2
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r11d
-	add	r10d,DWORD PTR[40+r15]
+	add	r10d,DWORD[40+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[92+rsi]
+	mov	ebx,DWORD[92+rsi]
 	add	r10d,4293915773
 	movzx	eax,al
 	xor	r12d,r8d
-	mov	DWORD PTR[88+rsi],edx
+	mov	DWORD[88+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,15
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],3
+	pinsrw	xmm0,WORD[rax*4+rdi],3
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r10d
-	add	r9d,DWORD PTR[4+r15]
+	add	r9d,DWORD[4+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[96+rsi]
+	mov	eax,DWORD[96+rsi]
 	add	r9d,2240044497
 	movzx	ebx,bl
 	xor	r12d,r11d
-	mov	DWORD PTR[92+rsi],edx
+	mov	DWORD[92+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,21
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],3
+	pinsrw	xmm1,WORD[rbx*4+rdi],3
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r9d
-	add	r8d,DWORD PTR[32+r15]
+	add	r8d,DWORD[32+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[100+rsi]
+	mov	ebx,DWORD[100+rsi]
 	add	r8d,1873313359
 	movzx	eax,al
 	xor	r12d,r10d
-	mov	DWORD PTR[96+rsi],edx
+	mov	DWORD[96+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,6
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],4
+	pinsrw	xmm0,WORD[rax*4+rdi],4
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r8d
-	add	r11d,DWORD PTR[60+r15]
+	add	r11d,DWORD[60+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[104+rsi]
+	mov	eax,DWORD[104+rsi]
 	add	r11d,4264355552
 	movzx	ebx,bl
 	xor	r12d,r9d
-	mov	DWORD PTR[100+rsi],edx
+	mov	DWORD[100+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,10
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],4
+	pinsrw	xmm1,WORD[rbx*4+rdi],4
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r11d
-	add	r10d,DWORD PTR[24+r15]
+	add	r10d,DWORD[24+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[108+rsi]
+	mov	ebx,DWORD[108+rsi]
 	add	r10d,2734768916
 	movzx	eax,al
 	xor	r12d,r8d
-	mov	DWORD PTR[104+rsi],edx
+	mov	DWORD[104+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,15
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],5
+	pinsrw	xmm0,WORD[rax*4+rdi],5
 
 	add	r10d,r11d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r10d
-	add	r9d,DWORD PTR[52+r15]
+	add	r9d,DWORD[52+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[112+rsi]
+	mov	eax,DWORD[112+rsi]
 	add	r9d,1309151649
 	movzx	ebx,bl
 	xor	r12d,r11d
-	mov	DWORD PTR[108+rsi],edx
+	mov	DWORD[108+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,21
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],5
+	pinsrw	xmm1,WORD[rbx*4+rdi],5
 
 	add	r9d,r10d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r11d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r9d
-	add	r8d,DWORD PTR[16+r15]
+	add	r8d,DWORD[16+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[116+rsi]
+	mov	ebx,DWORD[116+rsi]
 	add	r8d,4149444226
 	movzx	eax,al
 	xor	r12d,r10d
-	mov	DWORD PTR[112+rsi],edx
+	mov	DWORD[112+rsi],edx
 	add	r8d,r12d
 	add	cl,bl
 	rol	r8d,6
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],6
+	pinsrw	xmm0,WORD[rax*4+rdi],6
 
 	add	r8d,r9d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r10d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r8d
-	add	r11d,DWORD PTR[44+r15]
+	add	r11d,DWORD[44+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[120+rsi]
+	mov	eax,DWORD[120+rsi]
 	add	r11d,3174756917
 	movzx	ebx,bl
 	xor	r12d,r9d
-	mov	DWORD PTR[116+rsi],edx
+	mov	DWORD[116+rsi],edx
 	add	r11d,r12d
 	add	cl,al
 	rol	r11d,10
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],6
+	pinsrw	xmm1,WORD[rbx*4+rdi],6
 
 	add	r11d,r8d
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r9d
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	or	r12d,r11d
-	add	r10d,DWORD PTR[8+r15]
+	add	r10d,DWORD[8+r15]
 	add	al,dl
-	mov	ebx,DWORD PTR[124+rsi]
+	mov	ebx,DWORD[124+rsi]
 	add	r10d,718787259
 	movzx	eax,al
 	xor	r12d,r8d
-	mov	DWORD PTR[120+rsi],edx
+	mov	DWORD[120+rsi],edx
 	add	r10d,r12d
 	add	cl,bl
 	rol	r10d,15
 	mov	r12d,-1
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],7
+	pinsrw	xmm0,WORD[rax*4+rdi],7
 
 	add	r10d,r11d
-	movdqu	xmm5,XMMWORD PTR[48+r13]
+	movdqu	xmm5,XMMWORD[48+r13]
 	add	bpl,32
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	xor	r12d,r8d
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	or	r12d,r10d
-	add	r9d,DWORD PTR[36+r15]
+	add	r9d,DWORD[36+r15]
 	add	bl,dl
-	mov	eax,DWORD PTR[rbp*4+rdi]
+	mov	eax,DWORD[rbp*4+rdi]
 	add	r9d,3951481745
 	movzx	ebx,bl
 	xor	r12d,r11d
-	mov	DWORD PTR[124+rsi],edx
+	mov	DWORD[124+rsi],edx
 	add	r9d,r12d
 	add	cl,al
 	rol	r9d,21
 	mov	r12d,-1
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],7
+	pinsrw	xmm1,WORD[rbx*4+rdi],7
 
 	add	r9d,r10d
 	mov	rsi,rbp
@@ -1231,52 +1235,51 @@
 	mov	rsi,rcx
 	xor	rcx,rcx
 	mov	cl,sil
-	lea	rsi,QWORD PTR[rbp*4+rdi]
+	lea	rsi,[rbp*4+rdi]
 	psllq	xmm1,8
 	pxor	xmm5,xmm0
 	pxor	xmm5,xmm1
-	add	r8d,DWORD PTR[rsp]
-	add	r9d,DWORD PTR[4+rsp]
-	add	r10d,DWORD PTR[8+rsp]
-	add	r11d,DWORD PTR[12+rsp]
+	add	r8d,DWORD[rsp]
+	add	r9d,DWORD[4+rsp]
+	add	r10d,DWORD[8+rsp]
+	add	r11d,DWORD[12+rsp]
 
-	movdqu	XMMWORD PTR[r13*1+r14],xmm2
-	movdqu	XMMWORD PTR[16+r13*1+r14],xmm3
-	movdqu	XMMWORD PTR[32+r13*1+r14],xmm4
-	movdqu	XMMWORD PTR[48+r13*1+r14],xmm5
-	lea	r15,QWORD PTR[64+r15]
-	lea	r13,QWORD PTR[64+r13]
-	cmp	r15,QWORD PTR[16+rsp]
-	jb	$L$oop
+	movdqu	XMMWORD[r13*1+r14],xmm2
+	movdqu	XMMWORD[16+r13*1+r14],xmm3
+	movdqu	XMMWORD[32+r13*1+r14],xmm4
+	movdqu	XMMWORD[48+r13*1+r14],xmm5
+	lea	r15,[64+r15]
+	lea	r13,[64+r13]
+	cmp	r15,QWORD[16+rsp]
+	jb	NEAR $L$oop
 
-	mov	r12,QWORD PTR[24+rsp]
+	mov	r12,QWORD[24+rsp]
 	sub	cl,al
-	mov	DWORD PTR[r12],r8d
-	mov	DWORD PTR[4+r12],r9d
-	mov	DWORD PTR[8+r12],r10d
-	mov	DWORD PTR[12+r12],r11d
+	mov	DWORD[r12],r8d
+	mov	DWORD[4+r12],r9d
+	mov	DWORD[8+r12],r10d
+	mov	DWORD[12+r12],r11d
 	sub	bpl,1
-	mov	DWORD PTR[((-8))+rdi],ebp
-	mov	DWORD PTR[((-4))+rdi],ecx
+	mov	DWORD[((-8))+rdi],ebp
+	mov	DWORD[((-4))+rdi],ecx
 
-	mov	r15,QWORD PTR[40+rsp]
-	mov	r14,QWORD PTR[48+rsp]
-	mov	r13,QWORD PTR[56+rsp]
-	mov	r12,QWORD PTR[64+rsp]
-	mov	rbp,QWORD PTR[72+rsp]
-	mov	rbx,QWORD PTR[80+rsp]
-	lea	rsp,QWORD PTR[88+rsp]
-$L$epilogue::
-$L$abort::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	r15,QWORD[40+rsp]
+	mov	r14,QWORD[48+rsp]
+	mov	r13,QWORD[56+rsp]
+	mov	r12,QWORD[64+rsp]
+	mov	rbp,QWORD[72+rsp]
+	mov	rbx,QWORD[80+rsp]
+	lea	rsp,[88+rsp]
+$L$epilogue:
+$L$abort:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_rc4_md5_enc::
-rc4_md5_enc	ENDP
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+$L$SEH_end_rc4_md5_enc:
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1288,59 +1291,59 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$body]
+	lea	r10,[$L$body]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	mov	r15,QWORD PTR[40+rax]
-	mov	r14,QWORD PTR[48+rax]
-	mov	r13,QWORD PTR[56+rax]
-	mov	r12,QWORD PTR[64+rax]
-	mov	rbp,QWORD PTR[72+rax]
-	mov	rbx,QWORD PTR[80+rax]
-	lea	rax,QWORD PTR[88+rax]
+	mov	r15,QWORD[40+rax]
+	mov	r14,QWORD[48+rax]
+	mov	r13,QWORD[56+rax]
+	mov	r12,QWORD[64+rax]
+	mov	rbp,QWORD[72+rax]
+	mov	rbx,QWORD[80+rax]
+	lea	rax,[88+rax]
 
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -1354,21 +1357,16 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_rc4_md5_enc
-	DD	imagerel $L$SEH_end_rc4_md5_enc
-	DD	imagerel $L$SEH_info_rc4_md5_enc
+	DD	$L$SEH_begin_rc4_md5_enc wrt ..imagebase
+	DD	$L$SEH_end_rc4_md5_enc wrt ..imagebase
+	DD	$L$SEH_info_rc4_md5_enc wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_rc4_md5_enc::
+$L$SEH_info_rc4_md5_enc:
 DB	9,0,0,0
-	DD	imagerel se_handler
-
-.xdata	ENDS
-END
+	DD	se_handler wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
index c183cac..18ef62d 100644
--- a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
@@ -1,15 +1,19 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
-EXTERN	OPENSSL_ia32cap_P:NEAR
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-PUBLIC	asm_RC4
+EXTERN	OPENSSL_ia32cap_P
+
+global	asm_RC4
 
 ALIGN	16
-asm_RC4	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+asm_RC4:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_RC4::
+$L$SEH_begin_asm_RC4:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -17,538 +21,537 @@
 
 
 	or	rsi,rsi
-	jne	$L$entry
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	jne	NEAR $L$entry
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$entry::
+$L$entry:
 	push	rbx
 	push	r12
 	push	r13
-$L$prologue::
+$L$prologue:
 	mov	r11,rsi
 	mov	r12,rdx
 	mov	r13,rcx
 	xor	r10,r10
 	xor	rcx,rcx
 
-	lea	rdi,QWORD PTR[8+rdi]
-	mov	r10b,BYTE PTR[((-8))+rdi]
-	mov	cl,BYTE PTR[((-4))+rdi]
-	cmp	DWORD PTR[256+rdi],-1
-	je	$L$RC4_CHAR
-	mov	r8d,DWORD PTR[OPENSSL_ia32cap_P]
+	lea	rdi,[8+rdi]
+	mov	r10b,BYTE[((-8))+rdi]
+	mov	cl,BYTE[((-4))+rdi]
+	cmp	DWORD[256+rdi],-1
+	je	NEAR $L$RC4_CHAR
+	mov	r8d,DWORD[OPENSSL_ia32cap_P]
 	xor	rbx,rbx
 	inc	r10b
 	sub	rbx,r10
 	sub	r13,r12
-	mov	eax,DWORD PTR[r10*4+rdi]
+	mov	eax,DWORD[r10*4+rdi]
 	test	r11,-16
-	jz	$L$loop1
+	jz	NEAR $L$loop1
 	bt	r8d,30
-	jc	$L$intel
+	jc	NEAR $L$intel
 	and	rbx,7
-	lea	rsi,QWORD PTR[1+r10]
-	jz	$L$oop8
+	lea	rsi,[1+r10]
+	jz	NEAR $L$oop8
 	sub	r11,rbx
-$L$oop8_warmup::
+$L$oop8_warmup:
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	DWORD PTR[r10*4+rdi],edx
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	DWORD[r10*4+rdi],edx
 	add	al,dl
 	inc	r10b
-	mov	edx,DWORD PTR[rax*4+rdi]
-	mov	eax,DWORD PTR[r10*4+rdi]
-	xor	dl,BYTE PTR[r12]
-	mov	BYTE PTR[r13*1+r12],dl
-	lea	r12,QWORD PTR[1+r12]
+	mov	edx,DWORD[rax*4+rdi]
+	mov	eax,DWORD[r10*4+rdi]
+	xor	dl,BYTE[r12]
+	mov	BYTE[r13*1+r12],dl
+	lea	r12,[1+r12]
 	dec	rbx
-	jnz	$L$oop8_warmup
+	jnz	NEAR $L$oop8_warmup
 
-	lea	rsi,QWORD PTR[1+r10]
-	jmp	$L$oop8
+	lea	rsi,[1+r10]
+	jmp	NEAR $L$oop8
 ALIGN	16
-$L$oop8::
+$L$oop8:
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	ebx,DWORD PTR[rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	ebx,DWORD[rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[r10*4+rdi],edx
+	mov	DWORD[r10*4+rdi],edx
 	add	dl,al
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	cl,bl
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
-	mov	eax,DWORD PTR[4+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
+	mov	eax,DWORD[4+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[4+r10*4+rdi],edx
+	mov	DWORD[4+r10*4+rdi],edx
 	add	dl,bl
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	ebx,DWORD PTR[8+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	ebx,DWORD[8+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[8+r10*4+rdi],edx
+	mov	DWORD[8+r10*4+rdi],edx
 	add	dl,al
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	cl,bl
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
-	mov	eax,DWORD PTR[12+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
+	mov	eax,DWORD[12+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[12+r10*4+rdi],edx
+	mov	DWORD[12+r10*4+rdi],edx
 	add	dl,bl
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	ebx,DWORD PTR[16+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	ebx,DWORD[16+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[16+r10*4+rdi],edx
+	mov	DWORD[16+r10*4+rdi],edx
 	add	dl,al
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	cl,bl
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
-	mov	eax,DWORD PTR[20+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
+	mov	eax,DWORD[20+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[20+r10*4+rdi],edx
+	mov	DWORD[20+r10*4+rdi],edx
 	add	dl,bl
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	ebx,DWORD PTR[24+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	ebx,DWORD[24+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[24+r10*4+rdi],edx
+	mov	DWORD[24+r10*4+rdi],edx
 	add	dl,al
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	sil,8
 	add	cl,bl
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
-	mov	eax,DWORD PTR[((-4))+rsi*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
+	mov	eax,DWORD[((-4))+rsi*4+rdi]
 	ror	r8,8
-	mov	DWORD PTR[28+r10*4+rdi],edx
+	mov	DWORD[28+r10*4+rdi],edx
 	add	dl,bl
-	mov	r8b,BYTE PTR[rdx*4+rdi]
+	mov	r8b,BYTE[rdx*4+rdi]
 	add	r10b,8
 	ror	r8,8
 	sub	r11,8
 
-	xor	r8,QWORD PTR[r12]
-	mov	QWORD PTR[r13*1+r12],r8
-	lea	r12,QWORD PTR[8+r12]
+	xor	r8,QWORD[r12]
+	mov	QWORD[r13*1+r12],r8
+	lea	r12,[8+r12]
 
 	test	r11,-8
-	jnz	$L$oop8
+	jnz	NEAR $L$oop8
 	cmp	r11,0
-	jne	$L$loop1
-	jmp	$L$exit
+	jne	NEAR $L$loop1
+	jmp	NEAR $L$exit
 
 ALIGN	16
-$L$intel::
+$L$intel:
 	test	r11,-32
-	jz	$L$loop1
+	jz	NEAR $L$loop1
 	and	rbx,15
-	jz	$L$oop16_is_hot
+	jz	NEAR $L$oop16_is_hot
 	sub	r11,rbx
-$L$oop16_warmup::
+$L$oop16_warmup:
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	DWORD PTR[r10*4+rdi],edx
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	DWORD[r10*4+rdi],edx
 	add	al,dl
 	inc	r10b
-	mov	edx,DWORD PTR[rax*4+rdi]
-	mov	eax,DWORD PTR[r10*4+rdi]
-	xor	dl,BYTE PTR[r12]
-	mov	BYTE PTR[r13*1+r12],dl
-	lea	r12,QWORD PTR[1+r12]
+	mov	edx,DWORD[rax*4+rdi]
+	mov	eax,DWORD[r10*4+rdi]
+	xor	dl,BYTE[r12]
+	mov	BYTE[r13*1+r12],dl
+	lea	r12,[1+r12]
 	dec	rbx
-	jnz	$L$oop16_warmup
+	jnz	NEAR $L$oop16_warmup
 
 	mov	rbx,rcx
 	xor	rcx,rcx
 	mov	cl,bl
 
-$L$oop16_is_hot::
-	lea	rsi,QWORD PTR[r10*4+rdi]
+$L$oop16_is_hot:
+	lea	rsi,[r10*4+rdi]
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	pxor	xmm0,xmm0
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[4+rsi]
+	mov	ebx,DWORD[4+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[rsi],edx
+	mov	DWORD[rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],0
-	jmp	$L$oop16_enter
+	pinsrw	xmm0,WORD[rax*4+rdi],0
+	jmp	NEAR $L$oop16_enter
 ALIGN	16
-$L$oop16::
+$L$oop16:
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	mov	edx,DWORD[rcx*4+rdi]
 	pxor	xmm2,xmm0
 	psllq	xmm1,8
 	pxor	xmm0,xmm0
-	mov	DWORD PTR[rcx*4+rdi],eax
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[4+rsi]
+	mov	ebx,DWORD[4+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[rsi],edx
+	mov	DWORD[rsi],edx
 	pxor	xmm2,xmm1
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],0
-	movdqu	XMMWORD PTR[r13*1+r12],xmm2
-	lea	r12,QWORD PTR[16+r12]
-$L$oop16_enter::
-	mov	edx,DWORD PTR[rcx*4+rdi]
+	pinsrw	xmm0,WORD[rax*4+rdi],0
+	movdqu	XMMWORD[r13*1+r12],xmm2
+	lea	r12,[16+r12]
+$L$oop16_enter:
+	mov	edx,DWORD[rcx*4+rdi]
 	pxor	xmm1,xmm1
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[8+rsi]
+	mov	eax,DWORD[8+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[4+rsi],edx
+	mov	DWORD[4+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],0
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],0
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[12+rsi]
+	mov	ebx,DWORD[12+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[8+rsi],edx
+	mov	DWORD[8+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],1
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	pinsrw	xmm0,WORD[rax*4+rdi],1
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[16+rsi]
+	mov	eax,DWORD[16+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[12+rsi],edx
+	mov	DWORD[12+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],1
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],1
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[20+rsi]
+	mov	ebx,DWORD[20+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[16+rsi],edx
+	mov	DWORD[16+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],2
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	pinsrw	xmm0,WORD[rax*4+rdi],2
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[24+rsi]
+	mov	eax,DWORD[24+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[20+rsi],edx
+	mov	DWORD[20+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],2
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],2
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[28+rsi]
+	mov	ebx,DWORD[28+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[24+rsi],edx
+	mov	DWORD[24+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],3
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	pinsrw	xmm0,WORD[rax*4+rdi],3
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[32+rsi]
+	mov	eax,DWORD[32+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[28+rsi],edx
+	mov	DWORD[28+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],3
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],3
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[36+rsi]
+	mov	ebx,DWORD[36+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[32+rsi],edx
+	mov	DWORD[32+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],4
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	pinsrw	xmm0,WORD[rax*4+rdi],4
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[40+rsi]
+	mov	eax,DWORD[40+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[36+rsi],edx
+	mov	DWORD[36+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],4
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],4
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[44+rsi]
+	mov	ebx,DWORD[44+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[40+rsi],edx
+	mov	DWORD[40+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],5
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	pinsrw	xmm0,WORD[rax*4+rdi],5
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[48+rsi]
+	mov	eax,DWORD[48+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[44+rsi],edx
+	mov	DWORD[44+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],5
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],5
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[52+rsi]
+	mov	ebx,DWORD[52+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[48+rsi],edx
+	mov	DWORD[48+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],6
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	pinsrw	xmm0,WORD[rax*4+rdi],6
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
-	mov	eax,DWORD PTR[56+rsi]
+	mov	eax,DWORD[56+rsi]
 	movzx	ebx,bl
-	mov	DWORD PTR[52+rsi],edx
+	mov	DWORD[52+rsi],edx
 	add	cl,al
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],6
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
+	pinsrw	xmm1,WORD[rbx*4+rdi],6
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
 	add	al,dl
-	mov	ebx,DWORD PTR[60+rsi]
+	mov	ebx,DWORD[60+rsi]
 	movzx	eax,al
-	mov	DWORD PTR[56+rsi],edx
+	mov	DWORD[56+rsi],edx
 	add	cl,bl
-	pinsrw	xmm0,WORD PTR[rax*4+rdi],7
+	pinsrw	xmm0,WORD[rax*4+rdi],7
 	add	r10b,16
-	movdqu	xmm2,XMMWORD PTR[r12]
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],ebx
+	movdqu	xmm2,XMMWORD[r12]
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],ebx
 	add	bl,dl
 	movzx	ebx,bl
-	mov	DWORD PTR[60+rsi],edx
-	lea	rsi,QWORD PTR[r10*4+rdi]
-	pinsrw	xmm1,WORD PTR[rbx*4+rdi],7
-	mov	eax,DWORD PTR[rsi]
+	mov	DWORD[60+rsi],edx
+	lea	rsi,[r10*4+rdi]
+	pinsrw	xmm1,WORD[rbx*4+rdi],7
+	mov	eax,DWORD[rsi]
 	mov	rbx,rcx
 	xor	rcx,rcx
 	sub	r11,16
 	mov	cl,bl
 	test	r11,-16
-	jnz	$L$oop16
+	jnz	NEAR $L$oop16
 
 	psllq	xmm1,8
 	pxor	xmm2,xmm0
 	pxor	xmm2,xmm1
-	movdqu	XMMWORD PTR[r13*1+r12],xmm2
-	lea	r12,QWORD PTR[16+r12]
+	movdqu	XMMWORD[r13*1+r12],xmm2
+	lea	r12,[16+r12]
 
 	cmp	r11,0
-	jne	$L$loop1
-	jmp	$L$exit
+	jne	NEAR $L$loop1
+	jmp	NEAR $L$exit
 
 ALIGN	16
-$L$loop1::
+$L$loop1:
 	add	cl,al
-	mov	edx,DWORD PTR[rcx*4+rdi]
-	mov	DWORD PTR[rcx*4+rdi],eax
-	mov	DWORD PTR[r10*4+rdi],edx
+	mov	edx,DWORD[rcx*4+rdi]
+	mov	DWORD[rcx*4+rdi],eax
+	mov	DWORD[r10*4+rdi],edx
 	add	al,dl
 	inc	r10b
-	mov	edx,DWORD PTR[rax*4+rdi]
-	mov	eax,DWORD PTR[r10*4+rdi]
-	xor	dl,BYTE PTR[r12]
-	mov	BYTE PTR[r13*1+r12],dl
-	lea	r12,QWORD PTR[1+r12]
+	mov	edx,DWORD[rax*4+rdi]
+	mov	eax,DWORD[r10*4+rdi]
+	xor	dl,BYTE[r12]
+	mov	BYTE[r13*1+r12],dl
+	lea	r12,[1+r12]
 	dec	r11
-	jnz	$L$loop1
-	jmp	$L$exit
+	jnz	NEAR $L$loop1
+	jmp	NEAR $L$exit
 
 ALIGN	16
-$L$RC4_CHAR::
+$L$RC4_CHAR:
 	add	r10b,1
-	movzx	eax,BYTE PTR[r10*1+rdi]
+	movzx	eax,BYTE[r10*1+rdi]
 	test	r11,-8
-	jz	$L$cloop1
-	jmp	$L$cloop8
+	jz	NEAR $L$cloop1
+	jmp	NEAR $L$cloop8
 ALIGN	16
-$L$cloop8::
-	mov	r8d,DWORD PTR[r12]
-	mov	r9d,DWORD PTR[4+r12]
+$L$cloop8:
+	mov	r8d,DWORD[r12]
+	mov	r9d,DWORD[4+r12]
 	add	cl,al
-	lea	rsi,QWORD PTR[1+r10]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	rsi,[1+r10]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	esi,sil
-	movzx	ebx,BYTE PTR[rsi*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],al
+	movzx	ebx,BYTE[rsi*1+rdi]
+	mov	BYTE[rcx*1+rdi],al
 	cmp	rcx,rsi
-	mov	BYTE PTR[r10*1+rdi],dl
-	jne	$L$cmov0
+	mov	BYTE[r10*1+rdi],dl
+	jne	NEAR $L$cmov0
 	mov	rbx,rax
-$L$cmov0::
+$L$cmov0:
 	add	dl,al
-	xor	r8b,BYTE PTR[rdx*1+rdi]
+	xor	r8b,BYTE[rdx*1+rdi]
 	ror	r8d,8
 	add	cl,bl
-	lea	r10,QWORD PTR[1+rsi]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	r10,[1+rsi]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	r10d,r10b
-	movzx	eax,BYTE PTR[r10*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],bl
+	movzx	eax,BYTE[r10*1+rdi]
+	mov	BYTE[rcx*1+rdi],bl
 	cmp	rcx,r10
-	mov	BYTE PTR[rsi*1+rdi],dl
-	jne	$L$cmov1
+	mov	BYTE[rsi*1+rdi],dl
+	jne	NEAR $L$cmov1
 	mov	rax,rbx
-$L$cmov1::
+$L$cmov1:
 	add	dl,bl
-	xor	r8b,BYTE PTR[rdx*1+rdi]
+	xor	r8b,BYTE[rdx*1+rdi]
 	ror	r8d,8
 	add	cl,al
-	lea	rsi,QWORD PTR[1+r10]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	rsi,[1+r10]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	esi,sil
-	movzx	ebx,BYTE PTR[rsi*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],al
+	movzx	ebx,BYTE[rsi*1+rdi]
+	mov	BYTE[rcx*1+rdi],al
 	cmp	rcx,rsi
-	mov	BYTE PTR[r10*1+rdi],dl
-	jne	$L$cmov2
+	mov	BYTE[r10*1+rdi],dl
+	jne	NEAR $L$cmov2
 	mov	rbx,rax
-$L$cmov2::
+$L$cmov2:
 	add	dl,al
-	xor	r8b,BYTE PTR[rdx*1+rdi]
+	xor	r8b,BYTE[rdx*1+rdi]
 	ror	r8d,8
 	add	cl,bl
-	lea	r10,QWORD PTR[1+rsi]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	r10,[1+rsi]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	r10d,r10b
-	movzx	eax,BYTE PTR[r10*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],bl
+	movzx	eax,BYTE[r10*1+rdi]
+	mov	BYTE[rcx*1+rdi],bl
 	cmp	rcx,r10
-	mov	BYTE PTR[rsi*1+rdi],dl
-	jne	$L$cmov3
+	mov	BYTE[rsi*1+rdi],dl
+	jne	NEAR $L$cmov3
 	mov	rax,rbx
-$L$cmov3::
+$L$cmov3:
 	add	dl,bl
-	xor	r8b,BYTE PTR[rdx*1+rdi]
+	xor	r8b,BYTE[rdx*1+rdi]
 	ror	r8d,8
 	add	cl,al
-	lea	rsi,QWORD PTR[1+r10]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	rsi,[1+r10]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	esi,sil
-	movzx	ebx,BYTE PTR[rsi*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],al
+	movzx	ebx,BYTE[rsi*1+rdi]
+	mov	BYTE[rcx*1+rdi],al
 	cmp	rcx,rsi
-	mov	BYTE PTR[r10*1+rdi],dl
-	jne	$L$cmov4
+	mov	BYTE[r10*1+rdi],dl
+	jne	NEAR $L$cmov4
 	mov	rbx,rax
-$L$cmov4::
+$L$cmov4:
 	add	dl,al
-	xor	r9b,BYTE PTR[rdx*1+rdi]
+	xor	r9b,BYTE[rdx*1+rdi]
 	ror	r9d,8
 	add	cl,bl
-	lea	r10,QWORD PTR[1+rsi]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	r10,[1+rsi]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	r10d,r10b
-	movzx	eax,BYTE PTR[r10*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],bl
+	movzx	eax,BYTE[r10*1+rdi]
+	mov	BYTE[rcx*1+rdi],bl
 	cmp	rcx,r10
-	mov	BYTE PTR[rsi*1+rdi],dl
-	jne	$L$cmov5
+	mov	BYTE[rsi*1+rdi],dl
+	jne	NEAR $L$cmov5
 	mov	rax,rbx
-$L$cmov5::
+$L$cmov5:
 	add	dl,bl
-	xor	r9b,BYTE PTR[rdx*1+rdi]
+	xor	r9b,BYTE[rdx*1+rdi]
 	ror	r9d,8
 	add	cl,al
-	lea	rsi,QWORD PTR[1+r10]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	rsi,[1+r10]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	esi,sil
-	movzx	ebx,BYTE PTR[rsi*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],al
+	movzx	ebx,BYTE[rsi*1+rdi]
+	mov	BYTE[rcx*1+rdi],al
 	cmp	rcx,rsi
-	mov	BYTE PTR[r10*1+rdi],dl
-	jne	$L$cmov6
+	mov	BYTE[r10*1+rdi],dl
+	jne	NEAR $L$cmov6
 	mov	rbx,rax
-$L$cmov6::
+$L$cmov6:
 	add	dl,al
-	xor	r9b,BYTE PTR[rdx*1+rdi]
+	xor	r9b,BYTE[rdx*1+rdi]
 	ror	r9d,8
 	add	cl,bl
-	lea	r10,QWORD PTR[1+rsi]
-	movzx	edx,BYTE PTR[rcx*1+rdi]
+	lea	r10,[1+rsi]
+	movzx	edx,BYTE[rcx*1+rdi]
 	movzx	r10d,r10b
-	movzx	eax,BYTE PTR[r10*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],bl
+	movzx	eax,BYTE[r10*1+rdi]
+	mov	BYTE[rcx*1+rdi],bl
 	cmp	rcx,r10
-	mov	BYTE PTR[rsi*1+rdi],dl
-	jne	$L$cmov7
+	mov	BYTE[rsi*1+rdi],dl
+	jne	NEAR $L$cmov7
 	mov	rax,rbx
-$L$cmov7::
+$L$cmov7:
 	add	dl,bl
-	xor	r9b,BYTE PTR[rdx*1+rdi]
+	xor	r9b,BYTE[rdx*1+rdi]
 	ror	r9d,8
-	lea	r11,QWORD PTR[((-8))+r11]
-	mov	DWORD PTR[r13],r8d
-	lea	r12,QWORD PTR[8+r12]
-	mov	DWORD PTR[4+r13],r9d
-	lea	r13,QWORD PTR[8+r13]
+	lea	r11,[((-8))+r11]
+	mov	DWORD[r13],r8d
+	lea	r12,[8+r12]
+	mov	DWORD[4+r13],r9d
+	lea	r13,[8+r13]
 
 	test	r11,-8
-	jnz	$L$cloop8
+	jnz	NEAR $L$cloop8
 	cmp	r11,0
-	jne	$L$cloop1
-	jmp	$L$exit
+	jne	NEAR $L$cloop1
+	jmp	NEAR $L$exit
 ALIGN	16
-$L$cloop1::
+$L$cloop1:
 	add	cl,al
 	movzx	ecx,cl
-	movzx	edx,BYTE PTR[rcx*1+rdi]
-	mov	BYTE PTR[rcx*1+rdi],al
-	mov	BYTE PTR[r10*1+rdi],dl
+	movzx	edx,BYTE[rcx*1+rdi]
+	mov	BYTE[rcx*1+rdi],al
+	mov	BYTE[r10*1+rdi],dl
 	add	dl,al
 	add	r10b,1
 	movzx	edx,dl
 	movzx	r10d,r10b
-	movzx	edx,BYTE PTR[rdx*1+rdi]
-	movzx	eax,BYTE PTR[r10*1+rdi]
-	xor	dl,BYTE PTR[r12]
-	lea	r12,QWORD PTR[1+r12]
-	mov	BYTE PTR[r13],dl
-	lea	r13,QWORD PTR[1+r13]
+	movzx	edx,BYTE[rdx*1+rdi]
+	movzx	eax,BYTE[r10*1+rdi]
+	xor	dl,BYTE[r12]
+	lea	r12,[1+r12]
+	mov	BYTE[r13],dl
+	lea	r13,[1+r13]
 	sub	r11,1
-	jnz	$L$cloop1
-	jmp	$L$exit
+	jnz	NEAR $L$cloop1
+	jmp	NEAR $L$exit
 
 ALIGN	16
-$L$exit::
+$L$exit:
 	sub	r10b,1
-	mov	DWORD PTR[((-8))+rdi],r10d
-	mov	DWORD PTR[((-4))+rdi],ecx
+	mov	DWORD[((-8))+rdi],r10d
+	mov	DWORD[((-4))+rdi],ecx
 
-	mov	r13,QWORD PTR[rsp]
-	mov	r12,QWORD PTR[8+rsp]
-	mov	rbx,QWORD PTR[16+rsp]
+	mov	r13,QWORD[rsp]
+	mov	r12,QWORD[8+rsp]
+	mov	rbx,QWORD[16+rsp]
 	add	rsp,24
-$L$epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+$L$epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_RC4::
-asm_RC4	ENDP
-PUBLIC	asm_RC4_set_key
+$L$SEH_end_asm_RC4:
+global	asm_RC4_set_key
 
 ALIGN	16
-asm_RC4_set_key	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+asm_RC4_set_key:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_asm_RC4_set_key::
+$L$SEH_begin_asm_RC4_set_key:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	lea	rdi,QWORD PTR[8+rdi]
-	lea	rdx,QWORD PTR[rsi*1+rdx]
+	lea	rdi,[8+rdi]
+	lea	rdx,[rsi*1+rdx]
 	neg	rsi
 	mov	rcx,rsi
 	xor	eax,eax
@@ -556,87 +559,86 @@
 	xor	r10,r10
 	xor	r11,r11
 
-	mov	r8d,DWORD PTR[OPENSSL_ia32cap_P]
+	mov	r8d,DWORD[OPENSSL_ia32cap_P]
 	bt	r8d,20
-	jc	$L$c1stloop
-	jmp	$L$w1stloop
+	jc	NEAR $L$c1stloop
+	jmp	NEAR $L$w1stloop
 
 ALIGN	16
-$L$w1stloop::
-	mov	DWORD PTR[rax*4+rdi],eax
+$L$w1stloop:
+	mov	DWORD[rax*4+rdi],eax
 	add	al,1
-	jnc	$L$w1stloop
+	jnc	NEAR $L$w1stloop
 
 	xor	r9,r9
 	xor	r8,r8
 ALIGN	16
-$L$w2ndloop::
-	mov	r10d,DWORD PTR[r9*4+rdi]
-	add	r8b,BYTE PTR[rsi*1+rdx]
+$L$w2ndloop:
+	mov	r10d,DWORD[r9*4+rdi]
+	add	r8b,BYTE[rsi*1+rdx]
 	add	r8b,r10b
 	add	rsi,1
-	mov	r11d,DWORD PTR[r8*4+rdi]
+	mov	r11d,DWORD[r8*4+rdi]
 	cmovz	rsi,rcx
-	mov	DWORD PTR[r8*4+rdi],r10d
-	mov	DWORD PTR[r9*4+rdi],r11d
+	mov	DWORD[r8*4+rdi],r10d
+	mov	DWORD[r9*4+rdi],r11d
 	add	r9b,1
-	jnc	$L$w2ndloop
-	jmp	$L$exit_key
+	jnc	NEAR $L$w2ndloop
+	jmp	NEAR $L$exit_key
 
 ALIGN	16
-$L$c1stloop::
-	mov	BYTE PTR[rax*1+rdi],al
+$L$c1stloop:
+	mov	BYTE[rax*1+rdi],al
 	add	al,1
-	jnc	$L$c1stloop
+	jnc	NEAR $L$c1stloop
 
 	xor	r9,r9
 	xor	r8,r8
 ALIGN	16
-$L$c2ndloop::
-	mov	r10b,BYTE PTR[r9*1+rdi]
-	add	r8b,BYTE PTR[rsi*1+rdx]
+$L$c2ndloop:
+	mov	r10b,BYTE[r9*1+rdi]
+	add	r8b,BYTE[rsi*1+rdx]
 	add	r8b,r10b
 	add	rsi,1
-	mov	r11b,BYTE PTR[r8*1+rdi]
-	jnz	$L$cnowrap
+	mov	r11b,BYTE[r8*1+rdi]
+	jnz	NEAR $L$cnowrap
 	mov	rsi,rcx
-$L$cnowrap::
-	mov	BYTE PTR[r8*1+rdi],r10b
-	mov	BYTE PTR[r9*1+rdi],r11b
+$L$cnowrap:
+	mov	BYTE[r8*1+rdi],r10b
+	mov	BYTE[r9*1+rdi],r11b
 	add	r9b,1
-	jnc	$L$c2ndloop
-	mov	DWORD PTR[256+rdi],-1
+	jnc	NEAR $L$c2ndloop
+	mov	DWORD[256+rdi],-1
 
 ALIGN	16
-$L$exit_key::
+$L$exit_key:
 	xor	eax,eax
-	mov	DWORD PTR[((-8))+rdi],eax
-	mov	DWORD PTR[((-4))+rdi],eax
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	DWORD[((-8))+rdi],eax
+	mov	DWORD[((-4))+rdi],eax
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_asm_RC4_set_key::
-asm_RC4_set_key	ENDP
+$L$SEH_end_asm_RC4_set_key:
 
-PUBLIC	RC4_options
+global	RC4_options
 
 ALIGN	16
-RC4_options	PROC PUBLIC
-	lea	rax,QWORD PTR[$L$opts]
-	mov	rdx,QWORD PTR[OPENSSL_ia32cap_P]
-	mov	edx,DWORD PTR[rdx]
+RC4_options:
+	lea	rax,[$L$opts]
+	mov	rdx,QWORD[OPENSSL_ia32cap_P]
+	mov	edx,DWORD[rdx]
 	bt	edx,20
-	jc	$L$8xchar
+	jc	NEAR $L$8xchar
 	bt	edx,30
-	jnc	$L$done
+	jnc	NEAR $L$done
 	add	rax,25
 	DB	0F3h,0C3h		;repret
-$L$8xchar::
+$L$8xchar:
 	add	rax,12
-$L$done::
+$L$done:
 	DB	0F3h,0C3h		;repret
 ALIGN	64
-$L$opts::
+$L$opts:
 DB	114,99,52,40,56,120,44,105,110,116,41,0
 DB	114,99,52,40,56,120,44,99,104,97,114,41,0
 DB	114,99,52,40,49,54,120,44,105,110,116,41,0
@@ -645,11 +647,11 @@
 DB	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
 DB	62,0
 ALIGN	64
-RC4_options	ENDP
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-stream_se_handler	PROC PRIVATE
+stream_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -661,41 +663,41 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$prologue]
+	lea	r10,[$L$prologue]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 
-	lea	rax,QWORD PTR[24+rax]
+	lea	rax,[24+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	r12,QWORD PTR[((-16))+rax]
-	mov	r13,QWORD PTR[((-24))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
+	mov	rbx,QWORD[((-8))+rax]
+	mov	r12,QWORD[((-16))+rax]
+	mov	r13,QWORD[((-24))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	jmp	$L$common_seh_exit
-stream_se_handler	ENDP
+	jmp	NEAR $L$common_seh_exit
+
 
 
 ALIGN	16
-key_se_handler	PROC PRIVATE
+key_se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -707,32 +709,32 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[152+r8]
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+	mov	rax,QWORD[152+r8]
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-$L$common_seh_exit::
+$L$common_seh_exit:
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -746,28 +748,23 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-key_se_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_asm_RC4
-	DD	imagerel $L$SEH_end_asm_RC4
-	DD	imagerel $L$SEH_info_asm_RC4
+	DD	$L$SEH_begin_asm_RC4 wrt ..imagebase
+	DD	$L$SEH_end_asm_RC4 wrt ..imagebase
+	DD	$L$SEH_info_asm_RC4 wrt ..imagebase
 
-	DD	imagerel $L$SEH_begin_asm_RC4_set_key
-	DD	imagerel $L$SEH_end_asm_RC4_set_key
-	DD	imagerel $L$SEH_info_asm_RC4_set_key
+	DD	$L$SEH_begin_asm_RC4_set_key wrt ..imagebase
+	DD	$L$SEH_end_asm_RC4_set_key wrt ..imagebase
+	DD	$L$SEH_info_asm_RC4_set_key wrt ..imagebase
 
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_asm_RC4::
+$L$SEH_info_asm_RC4:
 DB	9,0,0,0
-	DD	imagerel stream_se_handler
-$L$SEH_info_asm_RC4_set_key::
+	DD	stream_se_handler wrt ..imagebase
+$L$SEH_info_asm_RC4_set_key:
 DB	9,0,0,0
-	DD	imagerel key_se_handler
-
-.xdata	ENDS
-END
+	DD	key_se_handler wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm
index ecda6dc..0f5361a 100644
--- a/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm
@@ -1,29 +1,33 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
-EXTERN	OPENSSL_ia32cap_P:NEAR
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-PUBLIC	sha1_block_data_order
+EXTERN	OPENSSL_ia32cap_P
+
+global	sha1_block_data_order
 
 ALIGN	16
-sha1_block_data_order	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+sha1_block_data_order:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_sha1_block_data_order::
+$L$SEH_begin_sha1_block_data_order:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	mov	r9d,DWORD PTR[((OPENSSL_ia32cap_P+0))]
-	mov	r8d,DWORD PTR[((OPENSSL_ia32cap_P+4))]
-	mov	r10d,DWORD PTR[((OPENSSL_ia32cap_P+8))]
+	mov	r9d,DWORD[((OPENSSL_ia32cap_P+0))]
+	mov	r8d,DWORD[((OPENSSL_ia32cap_P+4))]
+	mov	r10d,DWORD[((OPENSSL_ia32cap_P+8))]
 	test	r8d,512
-	jz	$L$ialu
-	jmp	_ssse3_shortcut
+	jz	NEAR $L$ialu
+	jmp	NEAR _ssse3_shortcut
 
 ALIGN	16
-$L$ialu::
+$L$ialu:
 	mov	rax,rsp
 	push	rbx
 	push	rbp
@@ -35,579 +39,579 @@
 	mov	r9,rsi
 	and	rsp,-64
 	mov	r10,rdx
-	mov	QWORD PTR[64+rsp],rax
-$L$prologue::
+	mov	QWORD[64+rsp],rax
+$L$prologue:
 
-	mov	esi,DWORD PTR[r8]
-	mov	edi,DWORD PTR[4+r8]
-	mov	r11d,DWORD PTR[8+r8]
-	mov	r12d,DWORD PTR[12+r8]
-	mov	r13d,DWORD PTR[16+r8]
-	jmp	$L$loop
+	mov	esi,DWORD[r8]
+	mov	edi,DWORD[4+r8]
+	mov	r11d,DWORD[8+r8]
+	mov	r12d,DWORD[12+r8]
+	mov	r13d,DWORD[16+r8]
+	jmp	NEAR $L$loop
 
 ALIGN	16
-$L$loop::
-	mov	edx,DWORD PTR[r9]
+$L$loop:
+	mov	edx,DWORD[r9]
 	bswap	edx
-	mov	ebp,DWORD PTR[4+r9]
+	mov	ebp,DWORD[4+r9]
 	mov	eax,r12d
-	mov	DWORD PTR[rsp],edx
+	mov	DWORD[rsp],edx
 	mov	ecx,esi
 	bswap	ebp
 	xor	eax,r11d
 	rol	ecx,5
 	and	eax,edi
-	lea	r13d,DWORD PTR[1518500249+r13*1+rdx]
+	lea	r13d,[1518500249+r13*1+rdx]
 	add	r13d,ecx
 	xor	eax,r12d
 	rol	edi,30
 	add	r13d,eax
-	mov	r14d,DWORD PTR[8+r9]
+	mov	r14d,DWORD[8+r9]
 	mov	eax,r11d
-	mov	DWORD PTR[4+rsp],ebp
+	mov	DWORD[4+rsp],ebp
 	mov	ecx,r13d
 	bswap	r14d
 	xor	eax,edi
 	rol	ecx,5
 	and	eax,esi
-	lea	r12d,DWORD PTR[1518500249+r12*1+rbp]
+	lea	r12d,[1518500249+r12*1+rbp]
 	add	r12d,ecx
 	xor	eax,r11d
 	rol	esi,30
 	add	r12d,eax
-	mov	edx,DWORD PTR[12+r9]
+	mov	edx,DWORD[12+r9]
 	mov	eax,edi
-	mov	DWORD PTR[8+rsp],r14d
+	mov	DWORD[8+rsp],r14d
 	mov	ecx,r12d
 	bswap	edx
 	xor	eax,esi
 	rol	ecx,5
 	and	eax,r13d
-	lea	r11d,DWORD PTR[1518500249+r11*1+r14]
+	lea	r11d,[1518500249+r11*1+r14]
 	add	r11d,ecx
 	xor	eax,edi
 	rol	r13d,30
 	add	r11d,eax
-	mov	ebp,DWORD PTR[16+r9]
+	mov	ebp,DWORD[16+r9]
 	mov	eax,esi
-	mov	DWORD PTR[12+rsp],edx
+	mov	DWORD[12+rsp],edx
 	mov	ecx,r11d
 	bswap	ebp
 	xor	eax,r13d
 	rol	ecx,5
 	and	eax,r12d
-	lea	edi,DWORD PTR[1518500249+rdi*1+rdx]
+	lea	edi,[1518500249+rdi*1+rdx]
 	add	edi,ecx
 	xor	eax,esi
 	rol	r12d,30
 	add	edi,eax
-	mov	r14d,DWORD PTR[20+r9]
+	mov	r14d,DWORD[20+r9]
 	mov	eax,r13d
-	mov	DWORD PTR[16+rsp],ebp
+	mov	DWORD[16+rsp],ebp
 	mov	ecx,edi
 	bswap	r14d
 	xor	eax,r12d
 	rol	ecx,5
 	and	eax,r11d
-	lea	esi,DWORD PTR[1518500249+rsi*1+rbp]
+	lea	esi,[1518500249+rsi*1+rbp]
 	add	esi,ecx
 	xor	eax,r13d
 	rol	r11d,30
 	add	esi,eax
-	mov	edx,DWORD PTR[24+r9]
+	mov	edx,DWORD[24+r9]
 	mov	eax,r12d
-	mov	DWORD PTR[20+rsp],r14d
+	mov	DWORD[20+rsp],r14d
 	mov	ecx,esi
 	bswap	edx
 	xor	eax,r11d
 	rol	ecx,5
 	and	eax,edi
-	lea	r13d,DWORD PTR[1518500249+r13*1+r14]
+	lea	r13d,[1518500249+r13*1+r14]
 	add	r13d,ecx
 	xor	eax,r12d
 	rol	edi,30
 	add	r13d,eax
-	mov	ebp,DWORD PTR[28+r9]
+	mov	ebp,DWORD[28+r9]
 	mov	eax,r11d
-	mov	DWORD PTR[24+rsp],edx
+	mov	DWORD[24+rsp],edx
 	mov	ecx,r13d
 	bswap	ebp
 	xor	eax,edi
 	rol	ecx,5
 	and	eax,esi
-	lea	r12d,DWORD PTR[1518500249+r12*1+rdx]
+	lea	r12d,[1518500249+r12*1+rdx]
 	add	r12d,ecx
 	xor	eax,r11d
 	rol	esi,30
 	add	r12d,eax
-	mov	r14d,DWORD PTR[32+r9]
+	mov	r14d,DWORD[32+r9]
 	mov	eax,edi
-	mov	DWORD PTR[28+rsp],ebp
+	mov	DWORD[28+rsp],ebp
 	mov	ecx,r12d
 	bswap	r14d
 	xor	eax,esi
 	rol	ecx,5
 	and	eax,r13d
-	lea	r11d,DWORD PTR[1518500249+r11*1+rbp]
+	lea	r11d,[1518500249+r11*1+rbp]
 	add	r11d,ecx
 	xor	eax,edi
 	rol	r13d,30
 	add	r11d,eax
-	mov	edx,DWORD PTR[36+r9]
+	mov	edx,DWORD[36+r9]
 	mov	eax,esi
-	mov	DWORD PTR[32+rsp],r14d
+	mov	DWORD[32+rsp],r14d
 	mov	ecx,r11d
 	bswap	edx
 	xor	eax,r13d
 	rol	ecx,5
 	and	eax,r12d
-	lea	edi,DWORD PTR[1518500249+rdi*1+r14]
+	lea	edi,[1518500249+rdi*1+r14]
 	add	edi,ecx
 	xor	eax,esi
 	rol	r12d,30
 	add	edi,eax
-	mov	ebp,DWORD PTR[40+r9]
+	mov	ebp,DWORD[40+r9]
 	mov	eax,r13d
-	mov	DWORD PTR[36+rsp],edx
+	mov	DWORD[36+rsp],edx
 	mov	ecx,edi
 	bswap	ebp
 	xor	eax,r12d
 	rol	ecx,5
 	and	eax,r11d
-	lea	esi,DWORD PTR[1518500249+rsi*1+rdx]
+	lea	esi,[1518500249+rsi*1+rdx]
 	add	esi,ecx
 	xor	eax,r13d
 	rol	r11d,30
 	add	esi,eax
-	mov	r14d,DWORD PTR[44+r9]
+	mov	r14d,DWORD[44+r9]
 	mov	eax,r12d
-	mov	DWORD PTR[40+rsp],ebp
+	mov	DWORD[40+rsp],ebp
 	mov	ecx,esi
 	bswap	r14d
 	xor	eax,r11d
 	rol	ecx,5
 	and	eax,edi
-	lea	r13d,DWORD PTR[1518500249+r13*1+rbp]
+	lea	r13d,[1518500249+r13*1+rbp]
 	add	r13d,ecx
 	xor	eax,r12d
 	rol	edi,30
 	add	r13d,eax
-	mov	edx,DWORD PTR[48+r9]
+	mov	edx,DWORD[48+r9]
 	mov	eax,r11d
-	mov	DWORD PTR[44+rsp],r14d
+	mov	DWORD[44+rsp],r14d
 	mov	ecx,r13d
 	bswap	edx
 	xor	eax,edi
 	rol	ecx,5
 	and	eax,esi
-	lea	r12d,DWORD PTR[1518500249+r12*1+r14]
+	lea	r12d,[1518500249+r12*1+r14]
 	add	r12d,ecx
 	xor	eax,r11d
 	rol	esi,30
 	add	r12d,eax
-	mov	ebp,DWORD PTR[52+r9]
+	mov	ebp,DWORD[52+r9]
 	mov	eax,edi
-	mov	DWORD PTR[48+rsp],edx
+	mov	DWORD[48+rsp],edx
 	mov	ecx,r12d
 	bswap	ebp
 	xor	eax,esi
 	rol	ecx,5
 	and	eax,r13d
-	lea	r11d,DWORD PTR[1518500249+r11*1+rdx]
+	lea	r11d,[1518500249+r11*1+rdx]
 	add	r11d,ecx
 	xor	eax,edi
 	rol	r13d,30
 	add	r11d,eax
-	mov	r14d,DWORD PTR[56+r9]
+	mov	r14d,DWORD[56+r9]
 	mov	eax,esi
-	mov	DWORD PTR[52+rsp],ebp
+	mov	DWORD[52+rsp],ebp
 	mov	ecx,r11d
 	bswap	r14d
 	xor	eax,r13d
 	rol	ecx,5
 	and	eax,r12d
-	lea	edi,DWORD PTR[1518500249+rdi*1+rbp]
+	lea	edi,[1518500249+rdi*1+rbp]
 	add	edi,ecx
 	xor	eax,esi
 	rol	r12d,30
 	add	edi,eax
-	mov	edx,DWORD PTR[60+r9]
+	mov	edx,DWORD[60+r9]
 	mov	eax,r13d
-	mov	DWORD PTR[56+rsp],r14d
+	mov	DWORD[56+rsp],r14d
 	mov	ecx,edi
 	bswap	edx
 	xor	eax,r12d
 	rol	ecx,5
 	and	eax,r11d
-	lea	esi,DWORD PTR[1518500249+rsi*1+r14]
+	lea	esi,[1518500249+rsi*1+r14]
 	add	esi,ecx
 	xor	eax,r13d
 	rol	r11d,30
 	add	esi,eax
-	xor	ebp,DWORD PTR[rsp]
+	xor	ebp,DWORD[rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[60+rsp],edx
+	mov	DWORD[60+rsp],edx
 	mov	ecx,esi
-	xor	ebp,DWORD PTR[8+rsp]
+	xor	ebp,DWORD[8+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[32+rsp]
+	xor	ebp,DWORD[32+rsp]
 	and	eax,edi
-	lea	r13d,DWORD PTR[1518500249+r13*1+rdx]
+	lea	r13d,[1518500249+r13*1+rdx]
 	rol	edi,30
 	xor	eax,r12d
 	add	r13d,ecx
 	rol	ebp,1
 	add	r13d,eax
-	xor	r14d,DWORD PTR[4+rsp]
+	xor	r14d,DWORD[4+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[rsp],ebp
+	mov	DWORD[rsp],ebp
 	mov	ecx,r13d
-	xor	r14d,DWORD PTR[12+rsp]
+	xor	r14d,DWORD[12+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	r14d,DWORD PTR[36+rsp]
+	xor	r14d,DWORD[36+rsp]
 	and	eax,esi
-	lea	r12d,DWORD PTR[1518500249+r12*1+rbp]
+	lea	r12d,[1518500249+r12*1+rbp]
 	rol	esi,30
 	xor	eax,r11d
 	add	r12d,ecx
 	rol	r14d,1
 	add	r12d,eax
-	xor	edx,DWORD PTR[8+rsp]
+	xor	edx,DWORD[8+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[4+rsp],r14d
+	mov	DWORD[4+rsp],r14d
 	mov	ecx,r12d
-	xor	edx,DWORD PTR[16+rsp]
+	xor	edx,DWORD[16+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	edx,DWORD PTR[40+rsp]
+	xor	edx,DWORD[40+rsp]
 	and	eax,r13d
-	lea	r11d,DWORD PTR[1518500249+r11*1+r14]
+	lea	r11d,[1518500249+r11*1+r14]
 	rol	r13d,30
 	xor	eax,edi
 	add	r11d,ecx
 	rol	edx,1
 	add	r11d,eax
-	xor	ebp,DWORD PTR[12+rsp]
+	xor	ebp,DWORD[12+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[8+rsp],edx
+	mov	DWORD[8+rsp],edx
 	mov	ecx,r11d
-	xor	ebp,DWORD PTR[20+rsp]
+	xor	ebp,DWORD[20+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[44+rsp]
+	xor	ebp,DWORD[44+rsp]
 	and	eax,r12d
-	lea	edi,DWORD PTR[1518500249+rdi*1+rdx]
+	lea	edi,[1518500249+rdi*1+rdx]
 	rol	r12d,30
 	xor	eax,esi
 	add	edi,ecx
 	rol	ebp,1
 	add	edi,eax
-	xor	r14d,DWORD PTR[16+rsp]
+	xor	r14d,DWORD[16+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[12+rsp],ebp
+	mov	DWORD[12+rsp],ebp
 	mov	ecx,edi
-	xor	r14d,DWORD PTR[24+rsp]
+	xor	r14d,DWORD[24+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[48+rsp]
+	xor	r14d,DWORD[48+rsp]
 	and	eax,r11d
-	lea	esi,DWORD PTR[1518500249+rsi*1+rbp]
+	lea	esi,[1518500249+rsi*1+rbp]
 	rol	r11d,30
 	xor	eax,r13d
 	add	esi,ecx
 	rol	r14d,1
 	add	esi,eax
-	xor	edx,DWORD PTR[20+rsp]
+	xor	edx,DWORD[20+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[16+rsp],r14d
+	mov	DWORD[16+rsp],r14d
 	mov	ecx,esi
-	xor	edx,DWORD PTR[28+rsp]
+	xor	edx,DWORD[28+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	edx,DWORD PTR[52+rsp]
-	lea	r13d,DWORD PTR[1859775393+r13*1+r14]
+	xor	edx,DWORD[52+rsp]
+	lea	r13d,[1859775393+r13*1+r14]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[24+rsp]
+	xor	ebp,DWORD[24+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[20+rsp],edx
+	mov	DWORD[20+rsp],edx
 	mov	ecx,r13d
-	xor	ebp,DWORD PTR[32+rsp]
+	xor	ebp,DWORD[32+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[56+rsp]
-	lea	r12d,DWORD PTR[1859775393+r12*1+rdx]
+	xor	ebp,DWORD[56+rsp]
+	lea	r12d,[1859775393+r12*1+rdx]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[28+rsp]
+	xor	r14d,DWORD[28+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[24+rsp],ebp
+	mov	DWORD[24+rsp],ebp
 	mov	ecx,r12d
-	xor	r14d,DWORD PTR[36+rsp]
+	xor	r14d,DWORD[36+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	r14d,DWORD PTR[60+rsp]
-	lea	r11d,DWORD PTR[1859775393+r11*1+rbp]
+	xor	r14d,DWORD[60+rsp]
+	lea	r11d,[1859775393+r11*1+rbp]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[32+rsp]
+	xor	edx,DWORD[32+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[28+rsp],r14d
+	mov	DWORD[28+rsp],r14d
 	mov	ecx,r11d
-	xor	edx,DWORD PTR[40+rsp]
+	xor	edx,DWORD[40+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	edx,DWORD PTR[rsp]
-	lea	edi,DWORD PTR[1859775393+rdi*1+r14]
+	xor	edx,DWORD[rsp]
+	lea	edi,[1859775393+rdi*1+r14]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[36+rsp]
+	xor	ebp,DWORD[36+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[32+rsp],edx
+	mov	DWORD[32+rsp],edx
 	mov	ecx,edi
-	xor	ebp,DWORD PTR[44+rsp]
+	xor	ebp,DWORD[44+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[4+rsp]
-	lea	esi,DWORD PTR[1859775393+rsi*1+rdx]
+	xor	ebp,DWORD[4+rsp]
+	lea	esi,[1859775393+rsi*1+rdx]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[40+rsp]
+	xor	r14d,DWORD[40+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[36+rsp],ebp
+	mov	DWORD[36+rsp],ebp
 	mov	ecx,esi
-	xor	r14d,DWORD PTR[48+rsp]
+	xor	r14d,DWORD[48+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[8+rsp]
-	lea	r13d,DWORD PTR[1859775393+r13*1+rbp]
+	xor	r14d,DWORD[8+rsp]
+	lea	r13d,[1859775393+r13*1+rbp]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[44+rsp]
+	xor	edx,DWORD[44+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[40+rsp],r14d
+	mov	DWORD[40+rsp],r14d
 	mov	ecx,r13d
-	xor	edx,DWORD PTR[52+rsp]
+	xor	edx,DWORD[52+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	edx,DWORD PTR[12+rsp]
-	lea	r12d,DWORD PTR[1859775393+r12*1+r14]
+	xor	edx,DWORD[12+rsp]
+	lea	r12d,[1859775393+r12*1+r14]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[48+rsp]
+	xor	ebp,DWORD[48+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[44+rsp],edx
+	mov	DWORD[44+rsp],edx
 	mov	ecx,r12d
-	xor	ebp,DWORD PTR[56+rsp]
+	xor	ebp,DWORD[56+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	ebp,DWORD PTR[16+rsp]
-	lea	r11d,DWORD PTR[1859775393+r11*1+rdx]
+	xor	ebp,DWORD[16+rsp]
+	lea	r11d,[1859775393+r11*1+rdx]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[52+rsp]
+	xor	r14d,DWORD[52+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[48+rsp],ebp
+	mov	DWORD[48+rsp],ebp
 	mov	ecx,r11d
-	xor	r14d,DWORD PTR[60+rsp]
+	xor	r14d,DWORD[60+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	r14d,DWORD PTR[20+rsp]
-	lea	edi,DWORD PTR[1859775393+rdi*1+rbp]
+	xor	r14d,DWORD[20+rsp]
+	lea	edi,[1859775393+rdi*1+rbp]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[56+rsp]
+	xor	edx,DWORD[56+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[52+rsp],r14d
+	mov	DWORD[52+rsp],r14d
 	mov	ecx,edi
-	xor	edx,DWORD PTR[rsp]
+	xor	edx,DWORD[rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	edx,DWORD PTR[24+rsp]
-	lea	esi,DWORD PTR[1859775393+rsi*1+r14]
+	xor	edx,DWORD[24+rsp]
+	lea	esi,[1859775393+rsi*1+r14]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[60+rsp]
+	xor	ebp,DWORD[60+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[56+rsp],edx
+	mov	DWORD[56+rsp],edx
 	mov	ecx,esi
-	xor	ebp,DWORD PTR[4+rsp]
+	xor	ebp,DWORD[4+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[28+rsp]
-	lea	r13d,DWORD PTR[1859775393+r13*1+rdx]
+	xor	ebp,DWORD[28+rsp]
+	lea	r13d,[1859775393+r13*1+rdx]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[rsp]
+	xor	r14d,DWORD[rsp]
 	mov	eax,esi
-	mov	DWORD PTR[60+rsp],ebp
+	mov	DWORD[60+rsp],ebp
 	mov	ecx,r13d
-	xor	r14d,DWORD PTR[8+rsp]
+	xor	r14d,DWORD[8+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[32+rsp]
-	lea	r12d,DWORD PTR[1859775393+r12*1+rbp]
+	xor	r14d,DWORD[32+rsp]
+	lea	r12d,[1859775393+r12*1+rbp]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[4+rsp]
+	xor	edx,DWORD[4+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[rsp],r14d
+	mov	DWORD[rsp],r14d
 	mov	ecx,r12d
-	xor	edx,DWORD PTR[12+rsp]
+	xor	edx,DWORD[12+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	edx,DWORD PTR[36+rsp]
-	lea	r11d,DWORD PTR[1859775393+r11*1+r14]
+	xor	edx,DWORD[36+rsp]
+	lea	r11d,[1859775393+r11*1+r14]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[8+rsp]
+	xor	ebp,DWORD[8+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[4+rsp],edx
+	mov	DWORD[4+rsp],edx
 	mov	ecx,r11d
-	xor	ebp,DWORD PTR[16+rsp]
+	xor	ebp,DWORD[16+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	ebp,DWORD PTR[40+rsp]
-	lea	edi,DWORD PTR[1859775393+rdi*1+rdx]
+	xor	ebp,DWORD[40+rsp]
+	lea	edi,[1859775393+rdi*1+rdx]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[12+rsp]
+	xor	r14d,DWORD[12+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[8+rsp],ebp
+	mov	DWORD[8+rsp],ebp
 	mov	ecx,edi
-	xor	r14d,DWORD PTR[20+rsp]
+	xor	r14d,DWORD[20+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[44+rsp]
-	lea	esi,DWORD PTR[1859775393+rsi*1+rbp]
+	xor	r14d,DWORD[44+rsp]
+	lea	esi,[1859775393+rsi*1+rbp]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[16+rsp]
+	xor	edx,DWORD[16+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[12+rsp],r14d
+	mov	DWORD[12+rsp],r14d
 	mov	ecx,esi
-	xor	edx,DWORD PTR[24+rsp]
+	xor	edx,DWORD[24+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	edx,DWORD PTR[48+rsp]
-	lea	r13d,DWORD PTR[1859775393+r13*1+r14]
+	xor	edx,DWORD[48+rsp]
+	lea	r13d,[1859775393+r13*1+r14]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[20+rsp]
+	xor	ebp,DWORD[20+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[16+rsp],edx
+	mov	DWORD[16+rsp],edx
 	mov	ecx,r13d
-	xor	ebp,DWORD PTR[28+rsp]
+	xor	ebp,DWORD[28+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[52+rsp]
-	lea	r12d,DWORD PTR[1859775393+r12*1+rdx]
+	xor	ebp,DWORD[52+rsp]
+	lea	r12d,[1859775393+r12*1+rdx]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[24+rsp]
+	xor	r14d,DWORD[24+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[20+rsp],ebp
+	mov	DWORD[20+rsp],ebp
 	mov	ecx,r12d
-	xor	r14d,DWORD PTR[32+rsp]
+	xor	r14d,DWORD[32+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	r14d,DWORD PTR[56+rsp]
-	lea	r11d,DWORD PTR[1859775393+r11*1+rbp]
+	xor	r14d,DWORD[56+rsp]
+	lea	r11d,[1859775393+r11*1+rbp]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[28+rsp]
+	xor	edx,DWORD[28+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[24+rsp],r14d
+	mov	DWORD[24+rsp],r14d
 	mov	ecx,r11d
-	xor	edx,DWORD PTR[36+rsp]
+	xor	edx,DWORD[36+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	edx,DWORD PTR[60+rsp]
-	lea	edi,DWORD PTR[1859775393+rdi*1+r14]
+	xor	edx,DWORD[60+rsp]
+	lea	edi,[1859775393+rdi*1+r14]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[32+rsp]
+	xor	ebp,DWORD[32+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[28+rsp],edx
+	mov	DWORD[28+rsp],edx
 	mov	ecx,edi
-	xor	ebp,DWORD PTR[40+rsp]
+	xor	ebp,DWORD[40+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[rsp]
-	lea	esi,DWORD PTR[1859775393+rsi*1+rdx]
+	xor	ebp,DWORD[rsp]
+	lea	esi,[1859775393+rsi*1+rdx]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[36+rsp]
+	xor	r14d,DWORD[36+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[32+rsp],ebp
+	mov	DWORD[32+rsp],ebp
 	mov	ebx,r12d
-	xor	r14d,DWORD PTR[44+rsp]
+	xor	r14d,DWORD[44+rsp]
 	and	eax,r11d
 	mov	ecx,esi
-	xor	r14d,DWORD PTR[4+rsp]
-	lea	r13d,DWORD PTR[((-1894007588))+r13*1+rbp]
+	xor	r14d,DWORD[4+rsp]
+	lea	r13d,[((-1894007588))+r13*1+rbp]
 	xor	ebx,r11d
 	rol	ecx,5
 	add	r13d,eax
@@ -616,15 +620,15 @@
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,ebx
-	xor	edx,DWORD PTR[40+rsp]
+	xor	edx,DWORD[40+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[36+rsp],r14d
+	mov	DWORD[36+rsp],r14d
 	mov	ebx,r11d
-	xor	edx,DWORD PTR[48+rsp]
+	xor	edx,DWORD[48+rsp]
 	and	eax,edi
 	mov	ecx,r13d
-	xor	edx,DWORD PTR[8+rsp]
-	lea	r12d,DWORD PTR[((-1894007588))+r12*1+r14]
+	xor	edx,DWORD[8+rsp]
+	lea	r12d,[((-1894007588))+r12*1+r14]
 	xor	ebx,edi
 	rol	ecx,5
 	add	r12d,eax
@@ -633,15 +637,15 @@
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,ebx
-	xor	ebp,DWORD PTR[44+rsp]
+	xor	ebp,DWORD[44+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[40+rsp],edx
+	mov	DWORD[40+rsp],edx
 	mov	ebx,edi
-	xor	ebp,DWORD PTR[52+rsp]
+	xor	ebp,DWORD[52+rsp]
 	and	eax,esi
 	mov	ecx,r12d
-	xor	ebp,DWORD PTR[12+rsp]
-	lea	r11d,DWORD PTR[((-1894007588))+r11*1+rdx]
+	xor	ebp,DWORD[12+rsp]
+	lea	r11d,[((-1894007588))+r11*1+rdx]
 	xor	ebx,esi
 	rol	ecx,5
 	add	r11d,eax
@@ -650,15 +654,15 @@
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,ebx
-	xor	r14d,DWORD PTR[48+rsp]
+	xor	r14d,DWORD[48+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[44+rsp],ebp
+	mov	DWORD[44+rsp],ebp
 	mov	ebx,esi
-	xor	r14d,DWORD PTR[56+rsp]
+	xor	r14d,DWORD[56+rsp]
 	and	eax,r13d
 	mov	ecx,r11d
-	xor	r14d,DWORD PTR[16+rsp]
-	lea	edi,DWORD PTR[((-1894007588))+rdi*1+rbp]
+	xor	r14d,DWORD[16+rsp]
+	lea	edi,[((-1894007588))+rdi*1+rbp]
 	xor	ebx,r13d
 	rol	ecx,5
 	add	edi,eax
@@ -667,15 +671,15 @@
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,ebx
-	xor	edx,DWORD PTR[52+rsp]
+	xor	edx,DWORD[52+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[48+rsp],r14d
+	mov	DWORD[48+rsp],r14d
 	mov	ebx,r13d
-	xor	edx,DWORD PTR[60+rsp]
+	xor	edx,DWORD[60+rsp]
 	and	eax,r12d
 	mov	ecx,edi
-	xor	edx,DWORD PTR[20+rsp]
-	lea	esi,DWORD PTR[((-1894007588))+rsi*1+r14]
+	xor	edx,DWORD[20+rsp]
+	lea	esi,[((-1894007588))+rsi*1+r14]
 	xor	ebx,r12d
 	rol	ecx,5
 	add	esi,eax
@@ -684,15 +688,15 @@
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,ebx
-	xor	ebp,DWORD PTR[56+rsp]
+	xor	ebp,DWORD[56+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[52+rsp],edx
+	mov	DWORD[52+rsp],edx
 	mov	ebx,r12d
-	xor	ebp,DWORD PTR[rsp]
+	xor	ebp,DWORD[rsp]
 	and	eax,r11d
 	mov	ecx,esi
-	xor	ebp,DWORD PTR[24+rsp]
-	lea	r13d,DWORD PTR[((-1894007588))+r13*1+rdx]
+	xor	ebp,DWORD[24+rsp]
+	lea	r13d,[((-1894007588))+r13*1+rdx]
 	xor	ebx,r11d
 	rol	ecx,5
 	add	r13d,eax
@@ -701,15 +705,15 @@
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,ebx
-	xor	r14d,DWORD PTR[60+rsp]
+	xor	r14d,DWORD[60+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[56+rsp],ebp
+	mov	DWORD[56+rsp],ebp
 	mov	ebx,r11d
-	xor	r14d,DWORD PTR[4+rsp]
+	xor	r14d,DWORD[4+rsp]
 	and	eax,edi
 	mov	ecx,r13d
-	xor	r14d,DWORD PTR[28+rsp]
-	lea	r12d,DWORD PTR[((-1894007588))+r12*1+rbp]
+	xor	r14d,DWORD[28+rsp]
+	lea	r12d,[((-1894007588))+r12*1+rbp]
 	xor	ebx,edi
 	rol	ecx,5
 	add	r12d,eax
@@ -718,15 +722,15 @@
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,ebx
-	xor	edx,DWORD PTR[rsp]
+	xor	edx,DWORD[rsp]
 	mov	eax,edi
-	mov	DWORD PTR[60+rsp],r14d
+	mov	DWORD[60+rsp],r14d
 	mov	ebx,edi
-	xor	edx,DWORD PTR[8+rsp]
+	xor	edx,DWORD[8+rsp]
 	and	eax,esi
 	mov	ecx,r12d
-	xor	edx,DWORD PTR[32+rsp]
-	lea	r11d,DWORD PTR[((-1894007588))+r11*1+r14]
+	xor	edx,DWORD[32+rsp]
+	lea	r11d,[((-1894007588))+r11*1+r14]
 	xor	ebx,esi
 	rol	ecx,5
 	add	r11d,eax
@@ -735,15 +739,15 @@
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,ebx
-	xor	ebp,DWORD PTR[4+rsp]
+	xor	ebp,DWORD[4+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[rsp],edx
+	mov	DWORD[rsp],edx
 	mov	ebx,esi
-	xor	ebp,DWORD PTR[12+rsp]
+	xor	ebp,DWORD[12+rsp]
 	and	eax,r13d
 	mov	ecx,r11d
-	xor	ebp,DWORD PTR[36+rsp]
-	lea	edi,DWORD PTR[((-1894007588))+rdi*1+rdx]
+	xor	ebp,DWORD[36+rsp]
+	lea	edi,[((-1894007588))+rdi*1+rdx]
 	xor	ebx,r13d
 	rol	ecx,5
 	add	edi,eax
@@ -752,15 +756,15 @@
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,ebx
-	xor	r14d,DWORD PTR[8+rsp]
+	xor	r14d,DWORD[8+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[4+rsp],ebp
+	mov	DWORD[4+rsp],ebp
 	mov	ebx,r13d
-	xor	r14d,DWORD PTR[16+rsp]
+	xor	r14d,DWORD[16+rsp]
 	and	eax,r12d
 	mov	ecx,edi
-	xor	r14d,DWORD PTR[40+rsp]
-	lea	esi,DWORD PTR[((-1894007588))+rsi*1+rbp]
+	xor	r14d,DWORD[40+rsp]
+	lea	esi,[((-1894007588))+rsi*1+rbp]
 	xor	ebx,r12d
 	rol	ecx,5
 	add	esi,eax
@@ -769,15 +773,15 @@
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,ebx
-	xor	edx,DWORD PTR[12+rsp]
+	xor	edx,DWORD[12+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[8+rsp],r14d
+	mov	DWORD[8+rsp],r14d
 	mov	ebx,r12d
-	xor	edx,DWORD PTR[20+rsp]
+	xor	edx,DWORD[20+rsp]
 	and	eax,r11d
 	mov	ecx,esi
-	xor	edx,DWORD PTR[44+rsp]
-	lea	r13d,DWORD PTR[((-1894007588))+r13*1+r14]
+	xor	edx,DWORD[44+rsp]
+	lea	r13d,[((-1894007588))+r13*1+r14]
 	xor	ebx,r11d
 	rol	ecx,5
 	add	r13d,eax
@@ -786,15 +790,15 @@
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,ebx
-	xor	ebp,DWORD PTR[16+rsp]
+	xor	ebp,DWORD[16+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[12+rsp],edx
+	mov	DWORD[12+rsp],edx
 	mov	ebx,r11d
-	xor	ebp,DWORD PTR[24+rsp]
+	xor	ebp,DWORD[24+rsp]
 	and	eax,edi
 	mov	ecx,r13d
-	xor	ebp,DWORD PTR[48+rsp]
-	lea	r12d,DWORD PTR[((-1894007588))+r12*1+rdx]
+	xor	ebp,DWORD[48+rsp]
+	lea	r12d,[((-1894007588))+r12*1+rdx]
 	xor	ebx,edi
 	rol	ecx,5
 	add	r12d,eax
@@ -803,15 +807,15 @@
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,ebx
-	xor	r14d,DWORD PTR[20+rsp]
+	xor	r14d,DWORD[20+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[16+rsp],ebp
+	mov	DWORD[16+rsp],ebp
 	mov	ebx,edi
-	xor	r14d,DWORD PTR[28+rsp]
+	xor	r14d,DWORD[28+rsp]
 	and	eax,esi
 	mov	ecx,r12d
-	xor	r14d,DWORD PTR[52+rsp]
-	lea	r11d,DWORD PTR[((-1894007588))+r11*1+rbp]
+	xor	r14d,DWORD[52+rsp]
+	lea	r11d,[((-1894007588))+r11*1+rbp]
 	xor	ebx,esi
 	rol	ecx,5
 	add	r11d,eax
@@ -820,15 +824,15 @@
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,ebx
-	xor	edx,DWORD PTR[24+rsp]
+	xor	edx,DWORD[24+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[20+rsp],r14d
+	mov	DWORD[20+rsp],r14d
 	mov	ebx,esi
-	xor	edx,DWORD PTR[32+rsp]
+	xor	edx,DWORD[32+rsp]
 	and	eax,r13d
 	mov	ecx,r11d
-	xor	edx,DWORD PTR[56+rsp]
-	lea	edi,DWORD PTR[((-1894007588))+rdi*1+r14]
+	xor	edx,DWORD[56+rsp]
+	lea	edi,[((-1894007588))+rdi*1+r14]
 	xor	ebx,r13d
 	rol	ecx,5
 	add	edi,eax
@@ -837,15 +841,15 @@
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,ebx
-	xor	ebp,DWORD PTR[28+rsp]
+	xor	ebp,DWORD[28+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[24+rsp],edx
+	mov	DWORD[24+rsp],edx
 	mov	ebx,r13d
-	xor	ebp,DWORD PTR[36+rsp]
+	xor	ebp,DWORD[36+rsp]
 	and	eax,r12d
 	mov	ecx,edi
-	xor	ebp,DWORD PTR[60+rsp]
-	lea	esi,DWORD PTR[((-1894007588))+rsi*1+rdx]
+	xor	ebp,DWORD[60+rsp]
+	lea	esi,[((-1894007588))+rsi*1+rdx]
 	xor	ebx,r12d
 	rol	ecx,5
 	add	esi,eax
@@ -854,15 +858,15 @@
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,ebx
-	xor	r14d,DWORD PTR[32+rsp]
+	xor	r14d,DWORD[32+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[28+rsp],ebp
+	mov	DWORD[28+rsp],ebp
 	mov	ebx,r12d
-	xor	r14d,DWORD PTR[40+rsp]
+	xor	r14d,DWORD[40+rsp]
 	and	eax,r11d
 	mov	ecx,esi
-	xor	r14d,DWORD PTR[rsp]
-	lea	r13d,DWORD PTR[((-1894007588))+r13*1+rbp]
+	xor	r14d,DWORD[rsp]
+	lea	r13d,[((-1894007588))+r13*1+rbp]
 	xor	ebx,r11d
 	rol	ecx,5
 	add	r13d,eax
@@ -871,15 +875,15 @@
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,ebx
-	xor	edx,DWORD PTR[36+rsp]
+	xor	edx,DWORD[36+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[32+rsp],r14d
+	mov	DWORD[32+rsp],r14d
 	mov	ebx,r11d
-	xor	edx,DWORD PTR[44+rsp]
+	xor	edx,DWORD[44+rsp]
 	and	eax,edi
 	mov	ecx,r13d
-	xor	edx,DWORD PTR[4+rsp]
-	lea	r12d,DWORD PTR[((-1894007588))+r12*1+r14]
+	xor	edx,DWORD[4+rsp]
+	lea	r12d,[((-1894007588))+r12*1+r14]
 	xor	ebx,edi
 	rol	ecx,5
 	add	r12d,eax
@@ -888,15 +892,15 @@
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,ebx
-	xor	ebp,DWORD PTR[40+rsp]
+	xor	ebp,DWORD[40+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[36+rsp],edx
+	mov	DWORD[36+rsp],edx
 	mov	ebx,edi
-	xor	ebp,DWORD PTR[48+rsp]
+	xor	ebp,DWORD[48+rsp]
 	and	eax,esi
 	mov	ecx,r12d
-	xor	ebp,DWORD PTR[8+rsp]
-	lea	r11d,DWORD PTR[((-1894007588))+r11*1+rdx]
+	xor	ebp,DWORD[8+rsp]
+	lea	r11d,[((-1894007588))+r11*1+rdx]
 	xor	ebx,esi
 	rol	ecx,5
 	add	r11d,eax
@@ -905,15 +909,15 @@
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,ebx
-	xor	r14d,DWORD PTR[44+rsp]
+	xor	r14d,DWORD[44+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[40+rsp],ebp
+	mov	DWORD[40+rsp],ebp
 	mov	ebx,esi
-	xor	r14d,DWORD PTR[52+rsp]
+	xor	r14d,DWORD[52+rsp]
 	and	eax,r13d
 	mov	ecx,r11d
-	xor	r14d,DWORD PTR[12+rsp]
-	lea	edi,DWORD PTR[((-1894007588))+rdi*1+rbp]
+	xor	r14d,DWORD[12+rsp]
+	lea	edi,[((-1894007588))+rdi*1+rbp]
 	xor	ebx,r13d
 	rol	ecx,5
 	add	edi,eax
@@ -922,15 +926,15 @@
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,ebx
-	xor	edx,DWORD PTR[48+rsp]
+	xor	edx,DWORD[48+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[44+rsp],r14d
+	mov	DWORD[44+rsp],r14d
 	mov	ebx,r13d
-	xor	edx,DWORD PTR[56+rsp]
+	xor	edx,DWORD[56+rsp]
 	and	eax,r12d
 	mov	ecx,edi
-	xor	edx,DWORD PTR[16+rsp]
-	lea	esi,DWORD PTR[((-1894007588))+rsi*1+r14]
+	xor	edx,DWORD[16+rsp]
+	lea	esi,[((-1894007588))+rsi*1+r14]
 	xor	ebx,r12d
 	rol	ecx,5
 	add	esi,eax
@@ -939,267 +943,267 @@
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,ebx
-	xor	ebp,DWORD PTR[52+rsp]
+	xor	ebp,DWORD[52+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[48+rsp],edx
+	mov	DWORD[48+rsp],edx
 	mov	ecx,esi
-	xor	ebp,DWORD PTR[60+rsp]
+	xor	ebp,DWORD[60+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[20+rsp]
-	lea	r13d,DWORD PTR[((-899497514))+r13*1+rdx]
+	xor	ebp,DWORD[20+rsp]
+	lea	r13d,[((-899497514))+r13*1+rdx]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[56+rsp]
+	xor	r14d,DWORD[56+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[52+rsp],ebp
+	mov	DWORD[52+rsp],ebp
 	mov	ecx,r13d
-	xor	r14d,DWORD PTR[rsp]
+	xor	r14d,DWORD[rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[24+rsp]
-	lea	r12d,DWORD PTR[((-899497514))+r12*1+rbp]
+	xor	r14d,DWORD[24+rsp]
+	lea	r12d,[((-899497514))+r12*1+rbp]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[60+rsp]
+	xor	edx,DWORD[60+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[56+rsp],r14d
+	mov	DWORD[56+rsp],r14d
 	mov	ecx,r12d
-	xor	edx,DWORD PTR[4+rsp]
+	xor	edx,DWORD[4+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	edx,DWORD PTR[28+rsp]
-	lea	r11d,DWORD PTR[((-899497514))+r11*1+r14]
+	xor	edx,DWORD[28+rsp]
+	lea	r11d,[((-899497514))+r11*1+r14]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[rsp]
+	xor	ebp,DWORD[rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[60+rsp],edx
+	mov	DWORD[60+rsp],edx
 	mov	ecx,r11d
-	xor	ebp,DWORD PTR[8+rsp]
+	xor	ebp,DWORD[8+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	ebp,DWORD PTR[32+rsp]
-	lea	edi,DWORD PTR[((-899497514))+rdi*1+rdx]
+	xor	ebp,DWORD[32+rsp]
+	lea	edi,[((-899497514))+rdi*1+rdx]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[4+rsp]
+	xor	r14d,DWORD[4+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[rsp],ebp
+	mov	DWORD[rsp],ebp
 	mov	ecx,edi
-	xor	r14d,DWORD PTR[12+rsp]
+	xor	r14d,DWORD[12+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[36+rsp]
-	lea	esi,DWORD PTR[((-899497514))+rsi*1+rbp]
+	xor	r14d,DWORD[36+rsp]
+	lea	esi,[((-899497514))+rsi*1+rbp]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[8+rsp]
+	xor	edx,DWORD[8+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[4+rsp],r14d
+	mov	DWORD[4+rsp],r14d
 	mov	ecx,esi
-	xor	edx,DWORD PTR[16+rsp]
+	xor	edx,DWORD[16+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	edx,DWORD PTR[40+rsp]
-	lea	r13d,DWORD PTR[((-899497514))+r13*1+r14]
+	xor	edx,DWORD[40+rsp]
+	lea	r13d,[((-899497514))+r13*1+r14]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[12+rsp]
+	xor	ebp,DWORD[12+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[8+rsp],edx
+	mov	DWORD[8+rsp],edx
 	mov	ecx,r13d
-	xor	ebp,DWORD PTR[20+rsp]
+	xor	ebp,DWORD[20+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[44+rsp]
-	lea	r12d,DWORD PTR[((-899497514))+r12*1+rdx]
+	xor	ebp,DWORD[44+rsp]
+	lea	r12d,[((-899497514))+r12*1+rdx]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[16+rsp]
+	xor	r14d,DWORD[16+rsp]
 	mov	eax,r13d
-	mov	DWORD PTR[12+rsp],ebp
+	mov	DWORD[12+rsp],ebp
 	mov	ecx,r12d
-	xor	r14d,DWORD PTR[24+rsp]
+	xor	r14d,DWORD[24+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	r14d,DWORD PTR[48+rsp]
-	lea	r11d,DWORD PTR[((-899497514))+r11*1+rbp]
+	xor	r14d,DWORD[48+rsp]
+	lea	r11d,[((-899497514))+r11*1+rbp]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[20+rsp]
+	xor	edx,DWORD[20+rsp]
 	mov	eax,r12d
-	mov	DWORD PTR[16+rsp],r14d
+	mov	DWORD[16+rsp],r14d
 	mov	ecx,r11d
-	xor	edx,DWORD PTR[28+rsp]
+	xor	edx,DWORD[28+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	edx,DWORD PTR[52+rsp]
-	lea	edi,DWORD PTR[((-899497514))+rdi*1+r14]
+	xor	edx,DWORD[52+rsp]
+	lea	edi,[((-899497514))+rdi*1+r14]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[24+rsp]
+	xor	ebp,DWORD[24+rsp]
 	mov	eax,r11d
-	mov	DWORD PTR[20+rsp],edx
+	mov	DWORD[20+rsp],edx
 	mov	ecx,edi
-	xor	ebp,DWORD PTR[32+rsp]
+	xor	ebp,DWORD[32+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[56+rsp]
-	lea	esi,DWORD PTR[((-899497514))+rsi*1+rdx]
+	xor	ebp,DWORD[56+rsp]
+	lea	esi,[((-899497514))+rsi*1+rdx]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[28+rsp]
+	xor	r14d,DWORD[28+rsp]
 	mov	eax,edi
-	mov	DWORD PTR[24+rsp],ebp
+	mov	DWORD[24+rsp],ebp
 	mov	ecx,esi
-	xor	r14d,DWORD PTR[36+rsp]
+	xor	r14d,DWORD[36+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[60+rsp]
-	lea	r13d,DWORD PTR[((-899497514))+r13*1+rbp]
+	xor	r14d,DWORD[60+rsp]
+	lea	r13d,[((-899497514))+r13*1+rbp]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[32+rsp]
+	xor	edx,DWORD[32+rsp]
 	mov	eax,esi
-	mov	DWORD PTR[28+rsp],r14d
+	mov	DWORD[28+rsp],r14d
 	mov	ecx,r13d
-	xor	edx,DWORD PTR[40+rsp]
+	xor	edx,DWORD[40+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	edx,DWORD PTR[rsp]
-	lea	r12d,DWORD PTR[((-899497514))+r12*1+r14]
+	xor	edx,DWORD[rsp]
+	lea	r12d,[((-899497514))+r12*1+r14]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[36+rsp]
+	xor	ebp,DWORD[36+rsp]
 	mov	eax,r13d
 
 	mov	ecx,r12d
-	xor	ebp,DWORD PTR[44+rsp]
+	xor	ebp,DWORD[44+rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	ebp,DWORD PTR[4+rsp]
-	lea	r11d,DWORD PTR[((-899497514))+r11*1+rdx]
+	xor	ebp,DWORD[4+rsp]
+	lea	r11d,[((-899497514))+r11*1+rdx]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[40+rsp]
+	xor	r14d,DWORD[40+rsp]
 	mov	eax,r12d
 
 	mov	ecx,r11d
-	xor	r14d,DWORD PTR[48+rsp]
+	xor	r14d,DWORD[48+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	r14d,DWORD PTR[8+rsp]
-	lea	edi,DWORD PTR[((-899497514))+rdi*1+rbp]
+	xor	r14d,DWORD[8+rsp]
+	lea	edi,[((-899497514))+rdi*1+rbp]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
 	add	edi,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[44+rsp]
+	xor	edx,DWORD[44+rsp]
 	mov	eax,r11d
 
 	mov	ecx,edi
-	xor	edx,DWORD PTR[52+rsp]
+	xor	edx,DWORD[52+rsp]
 	xor	eax,r13d
 	rol	ecx,5
-	xor	edx,DWORD PTR[12+rsp]
-	lea	esi,DWORD PTR[((-899497514))+rsi*1+r14]
+	xor	edx,DWORD[12+rsp]
+	lea	esi,[((-899497514))+rsi*1+r14]
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[48+rsp]
+	xor	ebp,DWORD[48+rsp]
 	mov	eax,edi
 
 	mov	ecx,esi
-	xor	ebp,DWORD PTR[56+rsp]
+	xor	ebp,DWORD[56+rsp]
 	xor	eax,r12d
 	rol	ecx,5
-	xor	ebp,DWORD PTR[16+rsp]
-	lea	r13d,DWORD PTR[((-899497514))+r13*1+rdx]
+	xor	ebp,DWORD[16+rsp]
+	lea	r13d,[((-899497514))+r13*1+rdx]
 	xor	eax,r11d
 	add	r13d,ecx
 	rol	edi,30
 	add	r13d,eax
 	rol	ebp,1
-	xor	r14d,DWORD PTR[52+rsp]
+	xor	r14d,DWORD[52+rsp]
 	mov	eax,esi
 
 	mov	ecx,r13d
-	xor	r14d,DWORD PTR[60+rsp]
+	xor	r14d,DWORD[60+rsp]
 	xor	eax,r11d
 	rol	ecx,5
-	xor	r14d,DWORD PTR[20+rsp]
-	lea	r12d,DWORD PTR[((-899497514))+r12*1+rbp]
+	xor	r14d,DWORD[20+rsp]
+	lea	r12d,[((-899497514))+r12*1+rbp]
 	xor	eax,edi
 	add	r12d,ecx
 	rol	esi,30
 	add	r12d,eax
 	rol	r14d,1
-	xor	edx,DWORD PTR[56+rsp]
+	xor	edx,DWORD[56+rsp]
 	mov	eax,r13d
 
 	mov	ecx,r12d
-	xor	edx,DWORD PTR[rsp]
+	xor	edx,DWORD[rsp]
 	xor	eax,edi
 	rol	ecx,5
-	xor	edx,DWORD PTR[24+rsp]
-	lea	r11d,DWORD PTR[((-899497514))+r11*1+r14]
+	xor	edx,DWORD[24+rsp]
+	lea	r11d,[((-899497514))+r11*1+r14]
 	xor	eax,esi
 	add	r11d,ecx
 	rol	r13d,30
 	add	r11d,eax
 	rol	edx,1
-	xor	ebp,DWORD PTR[60+rsp]
+	xor	ebp,DWORD[60+rsp]
 	mov	eax,r12d
 
 	mov	ecx,r11d
-	xor	ebp,DWORD PTR[4+rsp]
+	xor	ebp,DWORD[4+rsp]
 	xor	eax,esi
 	rol	ecx,5
-	xor	ebp,DWORD PTR[28+rsp]
-	lea	edi,DWORD PTR[((-899497514))+rdi*1+rdx]
+	xor	ebp,DWORD[28+rsp]
+	lea	edi,[((-899497514))+rdi*1+rdx]
 	xor	eax,r13d
 	add	edi,ecx
 	rol	r12d,30
@@ -1208,67 +1212,66 @@
 	mov	eax,r11d
 	mov	ecx,edi
 	xor	eax,r13d
-	lea	esi,DWORD PTR[((-899497514))+rsi*1+rbp]
+	lea	esi,[((-899497514))+rsi*1+rbp]
 	rol	ecx,5
 	xor	eax,r12d
 	add	esi,ecx
 	rol	r11d,30
 	add	esi,eax
-	add	esi,DWORD PTR[r8]
-	add	edi,DWORD PTR[4+r8]
-	add	r11d,DWORD PTR[8+r8]
-	add	r12d,DWORD PTR[12+r8]
-	add	r13d,DWORD PTR[16+r8]
-	mov	DWORD PTR[r8],esi
-	mov	DWORD PTR[4+r8],edi
-	mov	DWORD PTR[8+r8],r11d
-	mov	DWORD PTR[12+r8],r12d
-	mov	DWORD PTR[16+r8],r13d
+	add	esi,DWORD[r8]
+	add	edi,DWORD[4+r8]
+	add	r11d,DWORD[8+r8]
+	add	r12d,DWORD[12+r8]
+	add	r13d,DWORD[16+r8]
+	mov	DWORD[r8],esi
+	mov	DWORD[4+r8],edi
+	mov	DWORD[8+r8],r11d
+	mov	DWORD[12+r8],r12d
+	mov	DWORD[16+r8],r13d
 
 	sub	r10,1
-	lea	r9,QWORD PTR[64+r9]
-	jnz	$L$loop
+	lea	r9,[64+r9]
+	jnz	NEAR $L$loop
 
-	mov	rsi,QWORD PTR[64+rsp]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rsi,QWORD[64+rsp]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_sha1_block_data_order::
-sha1_block_data_order	ENDP
+$L$SEH_end_sha1_block_data_order:
 
 ALIGN	16
-sha1_block_data_order_ssse3	PROC PRIVATE
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+sha1_block_data_order_ssse3:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_sha1_block_data_order_ssse3::
+$L$SEH_begin_sha1_block_data_order_ssse3:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-_ssse3_shortcut::
+_ssse3_shortcut:
 	mov	rax,rsp
 	push	rbx
 	push	rbp
 	push	r12
 	push	r13
 	push	r14
-	lea	rsp,QWORD PTR[((-160))+rsp]
-	movaps	XMMWORD PTR[(-40-96)+rax],xmm6
-	movaps	XMMWORD PTR[(-40-80)+rax],xmm7
-	movaps	XMMWORD PTR[(-40-64)+rax],xmm8
-	movaps	XMMWORD PTR[(-40-48)+rax],xmm9
-	movaps	XMMWORD PTR[(-40-32)+rax],xmm10
-	movaps	XMMWORD PTR[(-40-16)+rax],xmm11
-$L$prologue_ssse3::
+	lea	rsp,[((-160))+rsp]
+	movaps	XMMWORD[(-40-96)+rax],xmm6
+	movaps	XMMWORD[(-40-80)+rax],xmm7
+	movaps	XMMWORD[(-40-64)+rax],xmm8
+	movaps	XMMWORD[(-40-48)+rax],xmm9
+	movaps	XMMWORD[(-40-32)+rax],xmm10
+	movaps	XMMWORD[(-40-16)+rax],xmm11
+$L$prologue_ssse3:
 	mov	r14,rax
 	and	rsp,-64
 	mov	r8,rdi
@@ -1277,24 +1280,24 @@
 
 	shl	r10,6
 	add	r10,r9
-	lea	r11,QWORD PTR[((K_XX_XX+64))]
+	lea	r11,[((K_XX_XX+64))]
 
-	mov	eax,DWORD PTR[r8]
-	mov	ebx,DWORD PTR[4+r8]
-	mov	ecx,DWORD PTR[8+r8]
-	mov	edx,DWORD PTR[12+r8]
+	mov	eax,DWORD[r8]
+	mov	ebx,DWORD[4+r8]
+	mov	ecx,DWORD[8+r8]
+	mov	edx,DWORD[12+r8]
 	mov	esi,ebx
-	mov	ebp,DWORD PTR[16+r8]
+	mov	ebp,DWORD[16+r8]
 	mov	edi,ecx
 	xor	edi,edx
 	and	esi,edi
 
-	movdqa	xmm6,XMMWORD PTR[64+r11]
-	movdqa	xmm9,XMMWORD PTR[((-64))+r11]
-	movdqu	xmm0,XMMWORD PTR[r9]
-	movdqu	xmm1,XMMWORD PTR[16+r9]
-	movdqu	xmm2,XMMWORD PTR[32+r9]
-	movdqu	xmm3,XMMWORD PTR[48+r9]
+	movdqa	xmm6,XMMWORD[64+r11]
+	movdqa	xmm9,XMMWORD[((-64))+r11]
+	movdqu	xmm0,XMMWORD[r9]
+	movdqu	xmm1,XMMWORD[16+r9]
+	movdqu	xmm2,XMMWORD[32+r9]
+	movdqu	xmm3,XMMWORD[48+r9]
 DB	102,15,56,0,198
 DB	102,15,56,0,206
 DB	102,15,56,0,214
@@ -1303,22 +1306,22 @@
 DB	102,15,56,0,222
 	paddd	xmm1,xmm9
 	paddd	xmm2,xmm9
-	movdqa	XMMWORD PTR[rsp],xmm0
+	movdqa	XMMWORD[rsp],xmm0
 	psubd	xmm0,xmm9
-	movdqa	XMMWORD PTR[16+rsp],xmm1
+	movdqa	XMMWORD[16+rsp],xmm1
 	psubd	xmm1,xmm9
-	movdqa	XMMWORD PTR[32+rsp],xmm2
+	movdqa	XMMWORD[32+rsp],xmm2
 	psubd	xmm2,xmm9
-	jmp	$L$oop_ssse3
+	jmp	NEAR $L$oop_ssse3
 ALIGN	16
-$L$oop_ssse3::
+$L$oop_ssse3:
 	ror	ebx,2
 	pshufd	xmm4,xmm0,238
 	xor	esi,edx
 	movdqa	xmm8,xmm3
 	paddd	xmm9,xmm3
 	mov	edi,eax
-	add	ebp,DWORD PTR[rsp]
+	add	ebp,DWORD[rsp]
 	punpcklqdq	xmm4,xmm1
 	xor	ebx,ecx
 	rol	eax,5
@@ -1332,11 +1335,11 @@
 	pxor	xmm8,xmm2
 	xor	edi,ecx
 	mov	esi,ebp
-	add	edx,DWORD PTR[4+rsp]
+	add	edx,DWORD[4+rsp]
 	pxor	xmm4,xmm8
 	xor	eax,ebx
 	rol	ebp,5
-	movdqa	XMMWORD PTR[48+rsp],xmm9
+	movdqa	XMMWORD[48+rsp],xmm9
 	add	edx,edi
 	and	esi,eax
 	movdqa	xmm10,xmm4
@@ -1348,7 +1351,7 @@
 	pslldq	xmm10,12
 	paddd	xmm4,xmm4
 	mov	edi,edx
-	add	ecx,DWORD PTR[8+rsp]
+	add	ecx,DWORD[8+rsp]
 	psrld	xmm8,31
 	xor	ebp,eax
 	rol	edx,5
@@ -1362,11 +1365,11 @@
 	por	xmm4,xmm8
 	xor	edi,eax
 	mov	esi,ecx
-	add	ebx,DWORD PTR[12+rsp]
+	add	ebx,DWORD[12+rsp]
 	pslld	xmm9,2
 	pxor	xmm4,xmm10
 	xor	edx,ebp
-	movdqa	xmm10,XMMWORD PTR[((-64))+r11]
+	movdqa	xmm10,XMMWORD[((-64))+r11]
 	rol	ecx,5
 	add	ebx,edi
 	and	esi,edx
@@ -1379,7 +1382,7 @@
 	movdqa	xmm9,xmm4
 	paddd	xmm10,xmm4
 	mov	edi,ebx
-	add	eax,DWORD PTR[16+rsp]
+	add	eax,DWORD[16+rsp]
 	punpcklqdq	xmm5,xmm2
 	xor	ecx,edx
 	rol	ebx,5
@@ -1393,11 +1396,11 @@
 	pxor	xmm9,xmm3
 	xor	edi,edx
 	mov	esi,eax
-	add	ebp,DWORD PTR[20+rsp]
+	add	ebp,DWORD[20+rsp]
 	pxor	xmm5,xmm9
 	xor	ebx,ecx
 	rol	eax,5
-	movdqa	XMMWORD PTR[rsp],xmm10
+	movdqa	XMMWORD[rsp],xmm10
 	add	ebp,edi
 	and	esi,ebx
 	movdqa	xmm8,xmm5
@@ -1409,7 +1412,7 @@
 	pslldq	xmm8,12
 	paddd	xmm5,xmm5
 	mov	edi,ebp
-	add	edx,DWORD PTR[24+rsp]
+	add	edx,DWORD[24+rsp]
 	psrld	xmm9,31
 	xor	eax,ebx
 	rol	ebp,5
@@ -1423,11 +1426,11 @@
 	por	xmm5,xmm9
 	xor	edi,ebx
 	mov	esi,edx
-	add	ecx,DWORD PTR[28+rsp]
+	add	ecx,DWORD[28+rsp]
 	pslld	xmm10,2
 	pxor	xmm5,xmm8
 	xor	ebp,eax
-	movdqa	xmm8,XMMWORD PTR[((-32))+r11]
+	movdqa	xmm8,XMMWORD[((-32))+r11]
 	rol	edx,5
 	add	ecx,edi
 	and	esi,ebp
@@ -1440,7 +1443,7 @@
 	movdqa	xmm10,xmm5
 	paddd	xmm8,xmm5
 	mov	edi,ecx
-	add	ebx,DWORD PTR[32+rsp]
+	add	ebx,DWORD[32+rsp]
 	punpcklqdq	xmm6,xmm3
 	xor	edx,ebp
 	rol	ecx,5
@@ -1454,11 +1457,11 @@
 	pxor	xmm10,xmm4
 	xor	edi,ebp
 	mov	esi,ebx
-	add	eax,DWORD PTR[36+rsp]
+	add	eax,DWORD[36+rsp]
 	pxor	xmm6,xmm10
 	xor	ecx,edx
 	rol	ebx,5
-	movdqa	XMMWORD PTR[16+rsp],xmm8
+	movdqa	XMMWORD[16+rsp],xmm8
 	add	eax,edi
 	and	esi,ecx
 	movdqa	xmm9,xmm6
@@ -1470,7 +1473,7 @@
 	pslldq	xmm9,12
 	paddd	xmm6,xmm6
 	mov	edi,eax
-	add	ebp,DWORD PTR[40+rsp]
+	add	ebp,DWORD[40+rsp]
 	psrld	xmm10,31
 	xor	ebx,ecx
 	rol	eax,5
@@ -1484,11 +1487,11 @@
 	por	xmm6,xmm10
 	xor	edi,ecx
 	mov	esi,ebp
-	add	edx,DWORD PTR[44+rsp]
+	add	edx,DWORD[44+rsp]
 	pslld	xmm8,2
 	pxor	xmm6,xmm9
 	xor	eax,ebx
-	movdqa	xmm9,XMMWORD PTR[((-32))+r11]
+	movdqa	xmm9,XMMWORD[((-32))+r11]
 	rol	ebp,5
 	add	edx,edi
 	and	esi,eax
@@ -1501,7 +1504,7 @@
 	movdqa	xmm8,xmm6
 	paddd	xmm9,xmm6
 	mov	edi,edx
-	add	ecx,DWORD PTR[48+rsp]
+	add	ecx,DWORD[48+rsp]
 	punpcklqdq	xmm7,xmm4
 	xor	ebp,eax
 	rol	edx,5
@@ -1515,11 +1518,11 @@
 	pxor	xmm8,xmm5
 	xor	edi,eax
 	mov	esi,ecx
-	add	ebx,DWORD PTR[52+rsp]
+	add	ebx,DWORD[52+rsp]
 	pxor	xmm7,xmm8
 	xor	edx,ebp
 	rol	ecx,5
-	movdqa	XMMWORD PTR[32+rsp],xmm9
+	movdqa	XMMWORD[32+rsp],xmm9
 	add	ebx,edi
 	and	esi,edx
 	movdqa	xmm10,xmm7
@@ -1531,7 +1534,7 @@
 	pslldq	xmm10,12
 	paddd	xmm7,xmm7
 	mov	edi,ebx
-	add	eax,DWORD PTR[56+rsp]
+	add	eax,DWORD[56+rsp]
 	psrld	xmm8,31
 	xor	ecx,edx
 	rol	ebx,5
@@ -1545,11 +1548,11 @@
 	por	xmm7,xmm8
 	xor	edi,edx
 	mov	esi,eax
-	add	ebp,DWORD PTR[60+rsp]
+	add	ebp,DWORD[60+rsp]
 	pslld	xmm9,2
 	pxor	xmm7,xmm10
 	xor	ebx,ecx
-	movdqa	xmm10,XMMWORD PTR[((-32))+r11]
+	movdqa	xmm10,XMMWORD[((-32))+r11]
 	rol	eax,5
 	add	ebp,edi
 	and	esi,ebx
@@ -1561,7 +1564,7 @@
 	pxor	xmm0,xmm4
 	xor	esi,ecx
 	mov	edi,ebp
-	add	edx,DWORD PTR[rsp]
+	add	edx,DWORD[rsp]
 	punpcklqdq	xmm9,xmm7
 	xor	eax,ebx
 	rol	ebp,5
@@ -1576,11 +1579,11 @@
 	ror	ebp,7
 	xor	edi,ebx
 	mov	esi,edx
-	add	ecx,DWORD PTR[4+rsp]
+	add	ecx,DWORD[4+rsp]
 	movdqa	xmm9,xmm0
 	xor	ebp,eax
 	rol	edx,5
-	movdqa	XMMWORD PTR[48+rsp],xmm10
+	movdqa	XMMWORD[48+rsp],xmm10
 	add	ecx,edi
 	and	esi,ebp
 	xor	ebp,eax
@@ -1590,7 +1593,7 @@
 	psrld	xmm9,30
 	xor	esi,eax
 	mov	edi,ecx
-	add	ebx,DWORD PTR[8+rsp]
+	add	ebx,DWORD[8+rsp]
 	por	xmm0,xmm9
 	xor	edx,ebp
 	rol	ecx,5
@@ -1599,7 +1602,7 @@
 	and	edi,edx
 	xor	edx,ebp
 	add	ebx,ecx
-	add	eax,DWORD PTR[12+rsp]
+	add	eax,DWORD[12+rsp]
 	xor	edi,ebp
 	mov	esi,ebx
 	rol	ebx,5
@@ -1608,7 +1611,7 @@
 	ror	ecx,7
 	add	eax,ebx
 	pxor	xmm1,xmm5
-	add	ebp,DWORD PTR[16+rsp]
+	add	ebp,DWORD[16+rsp]
 	xor	esi,ecx
 	punpcklqdq	xmm10,xmm0
 	mov	edi,eax
@@ -1621,17 +1624,17 @@
 	paddd	xmm8,xmm0
 	add	ebp,eax
 	pxor	xmm1,xmm10
-	add	edx,DWORD PTR[20+rsp]
+	add	edx,DWORD[20+rsp]
 	xor	edi,ebx
 	mov	esi,ebp
 	rol	ebp,5
 	movdqa	xmm10,xmm1
 	add	edx,edi
 	xor	esi,ebx
-	movdqa	XMMWORD PTR[rsp],xmm8
+	movdqa	XMMWORD[rsp],xmm8
 	ror	eax,7
 	add	edx,ebp
-	add	ecx,DWORD PTR[24+rsp]
+	add	ecx,DWORD[24+rsp]
 	pslld	xmm1,2
 	xor	esi,eax
 	mov	edi,edx
@@ -1642,7 +1645,7 @@
 	ror	ebp,7
 	por	xmm1,xmm10
 	add	ecx,edx
-	add	ebx,DWORD PTR[28+rsp]
+	add	ebx,DWORD[28+rsp]
 	pshufd	xmm8,xmm0,238
 	xor	edi,ebp
 	mov	esi,ecx
@@ -1652,7 +1655,7 @@
 	ror	edx,7
 	add	ebx,ecx
 	pxor	xmm2,xmm6
-	add	eax,DWORD PTR[32+rsp]
+	add	eax,DWORD[32+rsp]
 	xor	esi,edx
 	punpcklqdq	xmm8,xmm1
 	mov	edi,ebx
@@ -1660,22 +1663,22 @@
 	pxor	xmm2,xmm3
 	add	eax,esi
 	xor	edi,edx
-	movdqa	xmm10,XMMWORD PTR[r11]
+	movdqa	xmm10,XMMWORD[r11]
 	ror	ecx,7
 	paddd	xmm9,xmm1
 	add	eax,ebx
 	pxor	xmm2,xmm8
-	add	ebp,DWORD PTR[36+rsp]
+	add	ebp,DWORD[36+rsp]
 	xor	edi,ecx
 	mov	esi,eax
 	rol	eax,5
 	movdqa	xmm8,xmm2
 	add	ebp,edi
 	xor	esi,ecx
-	movdqa	XMMWORD PTR[16+rsp],xmm9
+	movdqa	XMMWORD[16+rsp],xmm9
 	ror	ebx,7
 	add	ebp,eax
-	add	edx,DWORD PTR[40+rsp]
+	add	edx,DWORD[40+rsp]
 	pslld	xmm2,2
 	xor	esi,ebx
 	mov	edi,ebp
@@ -1686,7 +1689,7 @@
 	ror	eax,7
 	por	xmm2,xmm8
 	add	edx,ebp
-	add	ecx,DWORD PTR[44+rsp]
+	add	ecx,DWORD[44+rsp]
 	pshufd	xmm9,xmm1,238
 	xor	edi,eax
 	mov	esi,edx
@@ -1696,7 +1699,7 @@
 	ror	ebp,7
 	add	ecx,edx
 	pxor	xmm3,xmm7
-	add	ebx,DWORD PTR[48+rsp]
+	add	ebx,DWORD[48+rsp]
 	xor	esi,ebp
 	punpcklqdq	xmm9,xmm2
 	mov	edi,ecx
@@ -1709,17 +1712,17 @@
 	paddd	xmm10,xmm2
 	add	ebx,ecx
 	pxor	xmm3,xmm9
-	add	eax,DWORD PTR[52+rsp]
+	add	eax,DWORD[52+rsp]
 	xor	edi,edx
 	mov	esi,ebx
 	rol	ebx,5
 	movdqa	xmm9,xmm3
 	add	eax,edi
 	xor	esi,edx
-	movdqa	XMMWORD PTR[32+rsp],xmm10
+	movdqa	XMMWORD[32+rsp],xmm10
 	ror	ecx,7
 	add	eax,ebx
-	add	ebp,DWORD PTR[56+rsp]
+	add	ebp,DWORD[56+rsp]
 	pslld	xmm3,2
 	xor	esi,ecx
 	mov	edi,eax
@@ -1730,7 +1733,7 @@
 	ror	ebx,7
 	por	xmm3,xmm9
 	add	ebp,eax
-	add	edx,DWORD PTR[60+rsp]
+	add	edx,DWORD[60+rsp]
 	pshufd	xmm10,xmm2,238
 	xor	edi,ebx
 	mov	esi,ebp
@@ -1740,7 +1743,7 @@
 	ror	eax,7
 	add	edx,ebp
 	pxor	xmm4,xmm0
-	add	ecx,DWORD PTR[rsp]
+	add	ecx,DWORD[rsp]
 	xor	esi,eax
 	punpcklqdq	xmm10,xmm3
 	mov	edi,edx
@@ -1753,17 +1756,17 @@
 	paddd	xmm8,xmm3
 	add	ecx,edx
 	pxor	xmm4,xmm10
-	add	ebx,DWORD PTR[4+rsp]
+	add	ebx,DWORD[4+rsp]
 	xor	edi,ebp
 	mov	esi,ecx
 	rol	ecx,5
 	movdqa	xmm10,xmm4
 	add	ebx,edi
 	xor	esi,ebp
-	movdqa	XMMWORD PTR[48+rsp],xmm8
+	movdqa	XMMWORD[48+rsp],xmm8
 	ror	edx,7
 	add	ebx,ecx
-	add	eax,DWORD PTR[8+rsp]
+	add	eax,DWORD[8+rsp]
 	pslld	xmm4,2
 	xor	esi,edx
 	mov	edi,ebx
@@ -1774,7 +1777,7 @@
 	ror	ecx,7
 	por	xmm4,xmm10
 	add	eax,ebx
-	add	ebp,DWORD PTR[12+rsp]
+	add	ebp,DWORD[12+rsp]
 	pshufd	xmm8,xmm3,238
 	xor	edi,ecx
 	mov	esi,eax
@@ -1784,7 +1787,7 @@
 	ror	ebx,7
 	add	ebp,eax
 	pxor	xmm5,xmm1
-	add	edx,DWORD PTR[16+rsp]
+	add	edx,DWORD[16+rsp]
 	xor	esi,ebx
 	punpcklqdq	xmm8,xmm4
 	mov	edi,ebp
@@ -1797,17 +1800,17 @@
 	paddd	xmm9,xmm4
 	add	edx,ebp
 	pxor	xmm5,xmm8
-	add	ecx,DWORD PTR[20+rsp]
+	add	ecx,DWORD[20+rsp]
 	xor	edi,eax
 	mov	esi,edx
 	rol	edx,5
 	movdqa	xmm8,xmm5
 	add	ecx,edi
 	xor	esi,eax
-	movdqa	XMMWORD PTR[rsp],xmm9
+	movdqa	XMMWORD[rsp],xmm9
 	ror	ebp,7
 	add	ecx,edx
-	add	ebx,DWORD PTR[24+rsp]
+	add	ebx,DWORD[24+rsp]
 	pslld	xmm5,2
 	xor	esi,ebp
 	mov	edi,ecx
@@ -1818,7 +1821,7 @@
 	ror	edx,7
 	por	xmm5,xmm8
 	add	ebx,ecx
-	add	eax,DWORD PTR[28+rsp]
+	add	eax,DWORD[28+rsp]
 	pshufd	xmm9,xmm4,238
 	ror	ecx,7
 	mov	esi,ebx
@@ -1829,7 +1832,7 @@
 	xor	ecx,edx
 	add	eax,ebx
 	pxor	xmm6,xmm2
-	add	ebp,DWORD PTR[32+rsp]
+	add	ebp,DWORD[32+rsp]
 	and	esi,ecx
 	xor	ecx,edx
 	ror	ebx,7
@@ -1845,14 +1848,14 @@
 	xor	ebx,ecx
 	pxor	xmm6,xmm9
 	add	ebp,eax
-	add	edx,DWORD PTR[36+rsp]
+	add	edx,DWORD[36+rsp]
 	and	edi,ebx
 	xor	ebx,ecx
 	ror	eax,7
 	movdqa	xmm9,xmm6
 	mov	esi,ebp
 	xor	edi,ebx
-	movdqa	XMMWORD PTR[16+rsp],xmm10
+	movdqa	XMMWORD[16+rsp],xmm10
 	rol	ebp,5
 	add	edx,edi
 	xor	esi,eax
@@ -1860,7 +1863,7 @@
 	xor	eax,ebx
 	add	edx,ebp
 	psrld	xmm9,30
-	add	ecx,DWORD PTR[40+rsp]
+	add	ecx,DWORD[40+rsp]
 	and	esi,eax
 	xor	eax,ebx
 	por	xmm6,xmm9
@@ -1873,7 +1876,7 @@
 	xor	edi,ebp
 	xor	ebp,eax
 	add	ecx,edx
-	add	ebx,DWORD PTR[44+rsp]
+	add	ebx,DWORD[44+rsp]
 	and	edi,ebp
 	xor	ebp,eax
 	ror	edx,7
@@ -1885,7 +1888,7 @@
 	xor	edx,ebp
 	add	ebx,ecx
 	pxor	xmm7,xmm3
-	add	eax,DWORD PTR[48+rsp]
+	add	eax,DWORD[48+rsp]
 	and	esi,edx
 	xor	edx,ebp
 	ror	ecx,7
@@ -1895,20 +1898,20 @@
 	pxor	xmm7,xmm0
 	rol	ebx,5
 	add	eax,esi
-	movdqa	xmm9,XMMWORD PTR[32+r11]
+	movdqa	xmm9,XMMWORD[32+r11]
 	xor	edi,ecx
 	paddd	xmm8,xmm6
 	xor	ecx,edx
 	pxor	xmm7,xmm10
 	add	eax,ebx
-	add	ebp,DWORD PTR[52+rsp]
+	add	ebp,DWORD[52+rsp]
 	and	edi,ecx
 	xor	ecx,edx
 	ror	ebx,7
 	movdqa	xmm10,xmm7
 	mov	esi,eax
 	xor	edi,ecx
-	movdqa	XMMWORD PTR[32+rsp],xmm8
+	movdqa	XMMWORD[32+rsp],xmm8
 	rol	eax,5
 	add	ebp,edi
 	xor	esi,ebx
@@ -1916,7 +1919,7 @@
 	xor	ebx,ecx
 	add	ebp,eax
 	psrld	xmm10,30
-	add	edx,DWORD PTR[56+rsp]
+	add	edx,DWORD[56+rsp]
 	and	esi,ebx
 	xor	ebx,ecx
 	por	xmm7,xmm10
@@ -1929,7 +1932,7 @@
 	xor	edi,eax
 	xor	eax,ebx
 	add	edx,ebp
-	add	ecx,DWORD PTR[60+rsp]
+	add	ecx,DWORD[60+rsp]
 	and	edi,eax
 	xor	eax,ebx
 	ror	ebp,7
@@ -1941,7 +1944,7 @@
 	xor	ebp,eax
 	add	ecx,edx
 	pxor	xmm0,xmm4
-	add	ebx,DWORD PTR[rsp]
+	add	ebx,DWORD[rsp]
 	and	esi,ebp
 	xor	ebp,eax
 	ror	edx,7
@@ -1957,14 +1960,14 @@
 	xor	edx,ebp
 	pxor	xmm0,xmm8
 	add	ebx,ecx
-	add	eax,DWORD PTR[4+rsp]
+	add	eax,DWORD[4+rsp]
 	and	edi,edx
 	xor	edx,ebp
 	ror	ecx,7
 	movdqa	xmm8,xmm0
 	mov	esi,ebx
 	xor	edi,edx
-	movdqa	XMMWORD PTR[48+rsp],xmm9
+	movdqa	XMMWORD[48+rsp],xmm9
 	rol	ebx,5
 	add	eax,edi
 	xor	esi,ecx
@@ -1972,7 +1975,7 @@
 	xor	ecx,edx
 	add	eax,ebx
 	psrld	xmm8,30
-	add	ebp,DWORD PTR[8+rsp]
+	add	ebp,DWORD[8+rsp]
 	and	esi,ecx
 	xor	ecx,edx
 	por	xmm0,xmm8
@@ -1985,7 +1988,7 @@
 	xor	edi,ebx
 	xor	ebx,ecx
 	add	ebp,eax
-	add	edx,DWORD PTR[12+rsp]
+	add	edx,DWORD[12+rsp]
 	and	edi,ebx
 	xor	ebx,ecx
 	ror	eax,7
@@ -1997,7 +2000,7 @@
 	xor	eax,ebx
 	add	edx,ebp
 	pxor	xmm1,xmm5
-	add	ecx,DWORD PTR[16+rsp]
+	add	ecx,DWORD[16+rsp]
 	and	esi,eax
 	xor	eax,ebx
 	ror	ebp,7
@@ -2013,14 +2016,14 @@
 	xor	ebp,eax
 	pxor	xmm1,xmm9
 	add	ecx,edx
-	add	ebx,DWORD PTR[20+rsp]
+	add	ebx,DWORD[20+rsp]
 	and	edi,ebp
 	xor	ebp,eax
 	ror	edx,7
 	movdqa	xmm9,xmm1
 	mov	esi,ecx
 	xor	edi,ebp
-	movdqa	XMMWORD PTR[rsp],xmm10
+	movdqa	XMMWORD[rsp],xmm10
 	rol	ecx,5
 	add	ebx,edi
 	xor	esi,edx
@@ -2028,7 +2031,7 @@
 	xor	edx,ebp
 	add	ebx,ecx
 	psrld	xmm9,30
-	add	eax,DWORD PTR[24+rsp]
+	add	eax,DWORD[24+rsp]
 	and	esi,edx
 	xor	edx,ebp
 	por	xmm1,xmm9
@@ -2041,7 +2044,7 @@
 	xor	edi,ecx
 	xor	ecx,edx
 	add	eax,ebx
-	add	ebp,DWORD PTR[28+rsp]
+	add	ebp,DWORD[28+rsp]
 	and	edi,ecx
 	xor	ecx,edx
 	ror	ebx,7
@@ -2053,7 +2056,7 @@
 	xor	ebx,ecx
 	add	ebp,eax
 	pxor	xmm2,xmm6
-	add	edx,DWORD PTR[32+rsp]
+	add	edx,DWORD[32+rsp]
 	and	esi,ebx
 	xor	ebx,ecx
 	ror	eax,7
@@ -2069,14 +2072,14 @@
 	xor	eax,ebx
 	pxor	xmm2,xmm10
 	add	edx,ebp
-	add	ecx,DWORD PTR[36+rsp]
+	add	ecx,DWORD[36+rsp]
 	and	edi,eax
 	xor	eax,ebx
 	ror	ebp,7
 	movdqa	xmm10,xmm2
 	mov	esi,edx
 	xor	edi,eax
-	movdqa	XMMWORD PTR[16+rsp],xmm8
+	movdqa	XMMWORD[16+rsp],xmm8
 	rol	edx,5
 	add	ecx,edi
 	xor	esi,ebp
@@ -2084,7 +2087,7 @@
 	xor	ebp,eax
 	add	ecx,edx
 	psrld	xmm10,30
-	add	ebx,DWORD PTR[40+rsp]
+	add	ebx,DWORD[40+rsp]
 	and	esi,ebp
 	xor	ebp,eax
 	por	xmm2,xmm10
@@ -2097,7 +2100,7 @@
 	xor	edi,edx
 	xor	edx,ebp
 	add	ebx,ecx
-	add	eax,DWORD PTR[44+rsp]
+	add	eax,DWORD[44+rsp]
 	and	edi,edx
 	xor	edx,ebp
 	ror	ecx,7
@@ -2108,7 +2111,7 @@
 	xor	esi,edx
 	add	eax,ebx
 	pxor	xmm3,xmm7
-	add	ebp,DWORD PTR[48+rsp]
+	add	ebp,DWORD[48+rsp]
 	xor	esi,ecx
 	punpcklqdq	xmm8,xmm2
 	mov	edi,eax
@@ -2121,17 +2124,17 @@
 	paddd	xmm9,xmm2
 	add	ebp,eax
 	pxor	xmm3,xmm8
-	add	edx,DWORD PTR[52+rsp]
+	add	edx,DWORD[52+rsp]
 	xor	edi,ebx
 	mov	esi,ebp
 	rol	ebp,5
 	movdqa	xmm8,xmm3
 	add	edx,edi
 	xor	esi,ebx
-	movdqa	XMMWORD PTR[32+rsp],xmm9
+	movdqa	XMMWORD[32+rsp],xmm9
 	ror	eax,7
 	add	edx,ebp
-	add	ecx,DWORD PTR[56+rsp]
+	add	ecx,DWORD[56+rsp]
 	pslld	xmm3,2
 	xor	esi,eax
 	mov	edi,edx
@@ -2142,7 +2145,7 @@
 	ror	ebp,7
 	por	xmm3,xmm8
 	add	ecx,edx
-	add	ebx,DWORD PTR[60+rsp]
+	add	ebx,DWORD[60+rsp]
 	xor	edi,ebp
 	mov	esi,ecx
 	rol	ecx,5
@@ -2150,17 +2153,17 @@
 	xor	esi,ebp
 	ror	edx,7
 	add	ebx,ecx
-	add	eax,DWORD PTR[rsp]
+	add	eax,DWORD[rsp]
 	xor	esi,edx
 	mov	edi,ebx
 	rol	ebx,5
 	paddd	xmm10,xmm3
 	add	eax,esi
 	xor	edi,edx
-	movdqa	XMMWORD PTR[48+rsp],xmm10
+	movdqa	XMMWORD[48+rsp],xmm10
 	ror	ecx,7
 	add	eax,ebx
-	add	ebp,DWORD PTR[4+rsp]
+	add	ebp,DWORD[4+rsp]
 	xor	edi,ecx
 	mov	esi,eax
 	rol	eax,5
@@ -2168,7 +2171,7 @@
 	xor	esi,ecx
 	ror	ebx,7
 	add	ebp,eax
-	add	edx,DWORD PTR[8+rsp]
+	add	edx,DWORD[8+rsp]
 	xor	esi,ebx
 	mov	edi,ebp
 	rol	ebp,5
@@ -2176,7 +2179,7 @@
 	xor	edi,ebx
 	ror	eax,7
 	add	edx,ebp
-	add	ecx,DWORD PTR[12+rsp]
+	add	ecx,DWORD[12+rsp]
 	xor	edi,eax
 	mov	esi,edx
 	rol	edx,5
@@ -2185,16 +2188,16 @@
 	ror	ebp,7
 	add	ecx,edx
 	cmp	r9,r10
-	je	$L$done_ssse3
-	movdqa	xmm6,XMMWORD PTR[64+r11]
-	movdqa	xmm9,XMMWORD PTR[((-64))+r11]
-	movdqu	xmm0,XMMWORD PTR[r9]
-	movdqu	xmm1,XMMWORD PTR[16+r9]
-	movdqu	xmm2,XMMWORD PTR[32+r9]
-	movdqu	xmm3,XMMWORD PTR[48+r9]
+	je	NEAR $L$done_ssse3
+	movdqa	xmm6,XMMWORD[64+r11]
+	movdqa	xmm9,XMMWORD[((-64))+r11]
+	movdqu	xmm0,XMMWORD[r9]
+	movdqu	xmm1,XMMWORD[16+r9]
+	movdqu	xmm2,XMMWORD[32+r9]
+	movdqu	xmm3,XMMWORD[48+r9]
 DB	102,15,56,0,198
 	add	r9,64
-	add	ebx,DWORD PTR[16+rsp]
+	add	ebx,DWORD[16+rsp]
 	xor	esi,ebp
 	mov	edi,ecx
 DB	102,15,56,0,206
@@ -2204,17 +2207,17 @@
 	ror	edx,7
 	paddd	xmm0,xmm9
 	add	ebx,ecx
-	add	eax,DWORD PTR[20+rsp]
+	add	eax,DWORD[20+rsp]
 	xor	edi,edx
 	mov	esi,ebx
-	movdqa	XMMWORD PTR[rsp],xmm0
+	movdqa	XMMWORD[rsp],xmm0
 	rol	ebx,5
 	add	eax,edi
 	xor	esi,edx
 	ror	ecx,7
 	psubd	xmm0,xmm9
 	add	eax,ebx
-	add	ebp,DWORD PTR[24+rsp]
+	add	ebp,DWORD[24+rsp]
 	xor	esi,ecx
 	mov	edi,eax
 	rol	eax,5
@@ -2222,7 +2225,7 @@
 	xor	edi,ecx
 	ror	ebx,7
 	add	ebp,eax
-	add	edx,DWORD PTR[28+rsp]
+	add	edx,DWORD[28+rsp]
 	xor	edi,ebx
 	mov	esi,ebp
 	rol	ebp,5
@@ -2230,7 +2233,7 @@
 	xor	esi,ebx
 	ror	eax,7
 	add	edx,ebp
-	add	ecx,DWORD PTR[32+rsp]
+	add	ecx,DWORD[32+rsp]
 	xor	esi,eax
 	mov	edi,edx
 DB	102,15,56,0,214
@@ -2240,17 +2243,17 @@
 	ror	ebp,7
 	paddd	xmm1,xmm9
 	add	ecx,edx
-	add	ebx,DWORD PTR[36+rsp]
+	add	ebx,DWORD[36+rsp]
 	xor	edi,ebp
 	mov	esi,ecx
-	movdqa	XMMWORD PTR[16+rsp],xmm1
+	movdqa	XMMWORD[16+rsp],xmm1
 	rol	ecx,5
 	add	ebx,edi
 	xor	esi,ebp
 	ror	edx,7
 	psubd	xmm1,xmm9
 	add	ebx,ecx
-	add	eax,DWORD PTR[40+rsp]
+	add	eax,DWORD[40+rsp]
 	xor	esi,edx
 	mov	edi,ebx
 	rol	ebx,5
@@ -2258,7 +2261,7 @@
 	xor	edi,edx
 	ror	ecx,7
 	add	eax,ebx
-	add	ebp,DWORD PTR[44+rsp]
+	add	ebp,DWORD[44+rsp]
 	xor	edi,ecx
 	mov	esi,eax
 	rol	eax,5
@@ -2266,7 +2269,7 @@
 	xor	esi,ecx
 	ror	ebx,7
 	add	ebp,eax
-	add	edx,DWORD PTR[48+rsp]
+	add	edx,DWORD[48+rsp]
 	xor	esi,ebx
 	mov	edi,ebp
 DB	102,15,56,0,222
@@ -2276,17 +2279,17 @@
 	ror	eax,7
 	paddd	xmm2,xmm9
 	add	edx,ebp
-	add	ecx,DWORD PTR[52+rsp]
+	add	ecx,DWORD[52+rsp]
 	xor	edi,eax
 	mov	esi,edx
-	movdqa	XMMWORD PTR[32+rsp],xmm2
+	movdqa	XMMWORD[32+rsp],xmm2
 	rol	edx,5
 	add	ecx,edi
 	xor	esi,eax
 	ror	ebp,7
 	psubd	xmm2,xmm9
 	add	ecx,edx
-	add	ebx,DWORD PTR[56+rsp]
+	add	ebx,DWORD[56+rsp]
 	xor	esi,ebp
 	mov	edi,ecx
 	rol	ecx,5
@@ -2294,32 +2297,32 @@
 	xor	edi,ebp
 	ror	edx,7
 	add	ebx,ecx
-	add	eax,DWORD PTR[60+rsp]
+	add	eax,DWORD[60+rsp]
 	xor	edi,edx
 	mov	esi,ebx
 	rol	ebx,5
 	add	eax,edi
 	ror	ecx,7
 	add	eax,ebx
-	add	eax,DWORD PTR[r8]
-	add	esi,DWORD PTR[4+r8]
-	add	ecx,DWORD PTR[8+r8]
-	add	edx,DWORD PTR[12+r8]
-	mov	DWORD PTR[r8],eax
-	add	ebp,DWORD PTR[16+r8]
-	mov	DWORD PTR[4+r8],esi
+	add	eax,DWORD[r8]
+	add	esi,DWORD[4+r8]
+	add	ecx,DWORD[8+r8]
+	add	edx,DWORD[12+r8]
+	mov	DWORD[r8],eax
+	add	ebp,DWORD[16+r8]
+	mov	DWORD[4+r8],esi
 	mov	ebx,esi
-	mov	DWORD PTR[8+r8],ecx
+	mov	DWORD[8+r8],ecx
 	mov	edi,ecx
-	mov	DWORD PTR[12+r8],edx
+	mov	DWORD[12+r8],edx
 	xor	edi,edx
-	mov	DWORD PTR[16+r8],ebp
+	mov	DWORD[16+r8],ebp
 	and	esi,edi
-	jmp	$L$oop_ssse3
+	jmp	NEAR $L$oop_ssse3
 
 ALIGN	16
-$L$done_ssse3::
-	add	ebx,DWORD PTR[16+rsp]
+$L$done_ssse3:
+	add	ebx,DWORD[16+rsp]
 	xor	esi,ebp
 	mov	edi,ecx
 	rol	ecx,5
@@ -2327,7 +2330,7 @@
 	xor	edi,ebp
 	ror	edx,7
 	add	ebx,ecx
-	add	eax,DWORD PTR[20+rsp]
+	add	eax,DWORD[20+rsp]
 	xor	edi,edx
 	mov	esi,ebx
 	rol	ebx,5
@@ -2335,7 +2338,7 @@
 	xor	esi,edx
 	ror	ecx,7
 	add	eax,ebx
-	add	ebp,DWORD PTR[24+rsp]
+	add	ebp,DWORD[24+rsp]
 	xor	esi,ecx
 	mov	edi,eax
 	rol	eax,5
@@ -2343,7 +2346,7 @@
 	xor	edi,ecx
 	ror	ebx,7
 	add	ebp,eax
-	add	edx,DWORD PTR[28+rsp]
+	add	edx,DWORD[28+rsp]
 	xor	edi,ebx
 	mov	esi,ebp
 	rol	ebp,5
@@ -2351,7 +2354,7 @@
 	xor	esi,ebx
 	ror	eax,7
 	add	edx,ebp
-	add	ecx,DWORD PTR[32+rsp]
+	add	ecx,DWORD[32+rsp]
 	xor	esi,eax
 	mov	edi,edx
 	rol	edx,5
@@ -2359,7 +2362,7 @@
 	xor	edi,eax
 	ror	ebp,7
 	add	ecx,edx
-	add	ebx,DWORD PTR[36+rsp]
+	add	ebx,DWORD[36+rsp]
 	xor	edi,ebp
 	mov	esi,ecx
 	rol	ecx,5
@@ -2367,7 +2370,7 @@
 	xor	esi,ebp
 	ror	edx,7
 	add	ebx,ecx
-	add	eax,DWORD PTR[40+rsp]
+	add	eax,DWORD[40+rsp]
 	xor	esi,edx
 	mov	edi,ebx
 	rol	ebx,5
@@ -2375,7 +2378,7 @@
 	xor	edi,edx
 	ror	ecx,7
 	add	eax,ebx
-	add	ebp,DWORD PTR[44+rsp]
+	add	ebp,DWORD[44+rsp]
 	xor	edi,ecx
 	mov	esi,eax
 	rol	eax,5
@@ -2383,7 +2386,7 @@
 	xor	esi,ecx
 	ror	ebx,7
 	add	ebp,eax
-	add	edx,DWORD PTR[48+rsp]
+	add	edx,DWORD[48+rsp]
 	xor	esi,ebx
 	mov	edi,ebp
 	rol	ebp,5
@@ -2391,7 +2394,7 @@
 	xor	edi,ebx
 	ror	eax,7
 	add	edx,ebp
-	add	ecx,DWORD PTR[52+rsp]
+	add	ecx,DWORD[52+rsp]
 	xor	edi,eax
 	mov	esi,edx
 	rol	edx,5
@@ -2399,7 +2402,7 @@
 	xor	esi,eax
 	ror	ebp,7
 	add	ecx,edx
-	add	ebx,DWORD PTR[56+rsp]
+	add	ebx,DWORD[56+rsp]
 	xor	esi,ebp
 	mov	edi,ecx
 	rol	ecx,5
@@ -2407,65 +2410,64 @@
 	xor	edi,ebp
 	ror	edx,7
 	add	ebx,ecx
-	add	eax,DWORD PTR[60+rsp]
+	add	eax,DWORD[60+rsp]
 	xor	edi,edx
 	mov	esi,ebx
 	rol	ebx,5
 	add	eax,edi
 	ror	ecx,7
 	add	eax,ebx
-	add	eax,DWORD PTR[r8]
-	add	esi,DWORD PTR[4+r8]
-	add	ecx,DWORD PTR[8+r8]
-	mov	DWORD PTR[r8],eax
-	add	edx,DWORD PTR[12+r8]
-	mov	DWORD PTR[4+r8],esi
-	add	ebp,DWORD PTR[16+r8]
-	mov	DWORD PTR[8+r8],ecx
-	mov	DWORD PTR[12+r8],edx
-	mov	DWORD PTR[16+r8],ebp
-	movaps	xmm6,XMMWORD PTR[((-40-96))+r14]
-	movaps	xmm7,XMMWORD PTR[((-40-80))+r14]
-	movaps	xmm8,XMMWORD PTR[((-40-64))+r14]
-	movaps	xmm9,XMMWORD PTR[((-40-48))+r14]
-	movaps	xmm10,XMMWORD PTR[((-40-32))+r14]
-	movaps	xmm11,XMMWORD PTR[((-40-16))+r14]
-	lea	rsi,QWORD PTR[r14]
-	mov	r14,QWORD PTR[((-40))+rsi]
-	mov	r13,QWORD PTR[((-32))+rsi]
-	mov	r12,QWORD PTR[((-24))+rsi]
-	mov	rbp,QWORD PTR[((-16))+rsi]
-	mov	rbx,QWORD PTR[((-8))+rsi]
-	lea	rsp,QWORD PTR[rsi]
-$L$epilogue_ssse3::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	add	eax,DWORD[r8]
+	add	esi,DWORD[4+r8]
+	add	ecx,DWORD[8+r8]
+	mov	DWORD[r8],eax
+	add	edx,DWORD[12+r8]
+	mov	DWORD[4+r8],esi
+	add	ebp,DWORD[16+r8]
+	mov	DWORD[8+r8],ecx
+	mov	DWORD[12+r8],edx
+	mov	DWORD[16+r8],ebp
+	movaps	xmm6,XMMWORD[((-40-96))+r14]
+	movaps	xmm7,XMMWORD[((-40-80))+r14]
+	movaps	xmm8,XMMWORD[((-40-64))+r14]
+	movaps	xmm9,XMMWORD[((-40-48))+r14]
+	movaps	xmm10,XMMWORD[((-40-32))+r14]
+	movaps	xmm11,XMMWORD[((-40-16))+r14]
+	lea	rsi,[r14]
+	mov	r14,QWORD[((-40))+rsi]
+	mov	r13,QWORD[((-32))+rsi]
+	mov	r12,QWORD[((-24))+rsi]
+	mov	rbp,QWORD[((-16))+rsi]
+	mov	rbx,QWORD[((-8))+rsi]
+	lea	rsp,[rsi]
+$L$epilogue_ssse3:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_sha1_block_data_order_ssse3::
-sha1_block_data_order_ssse3	ENDP
+$L$SEH_end_sha1_block_data_order_ssse3:
 ALIGN	64
-K_XX_XX::
-	DD	05a827999h,05a827999h,05a827999h,05a827999h
-	DD	05a827999h,05a827999h,05a827999h,05a827999h
-	DD	06ed9eba1h,06ed9eba1h,06ed9eba1h,06ed9eba1h
-	DD	06ed9eba1h,06ed9eba1h,06ed9eba1h,06ed9eba1h
-	DD	08f1bbcdch,08f1bbcdch,08f1bbcdch,08f1bbcdch
-	DD	08f1bbcdch,08f1bbcdch,08f1bbcdch,08f1bbcdch
-	DD	0ca62c1d6h,0ca62c1d6h,0ca62c1d6h,0ca62c1d6h
-	DD	0ca62c1d6h,0ca62c1d6h,0ca62c1d6h,0ca62c1d6h
-	DD	000010203h,004050607h,008090a0bh,00c0d0e0fh
-	DD	000010203h,004050607h,008090a0bh,00c0d0e0fh
-DB	0fh,0eh,0dh,0ch,0bh,0ah,09h,08h,07h,06h,05h,04h,03h,02h,01h,00h
+K_XX_XX:
+	DD	0x5a827999,0x5a827999,0x5a827999,0x5a827999
+	DD	0x5a827999,0x5a827999,0x5a827999,0x5a827999
+	DD	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
+	DD	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
+	DD	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
+	DD	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
+	DD	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
+	DD	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+DB	0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
 DB	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
 DB	102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
 DB	32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
 DB	97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
 DB	103,62,0
 ALIGN	64
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2477,37 +2479,37 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	lea	r10,QWORD PTR[$L$prologue]
+	lea	r10,[$L$prologue]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[64+rax]
+	mov	rax,QWORD[64+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
 
-	jmp	$L$common_seh_tail
-se_handler	ENDP
+	jmp	NEAR $L$common_seh_tail
+
 
 ALIGN	16
-ssse3_handler	PROC PRIVATE
+ssse3_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2519,67 +2521,67 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$common_seh_tail
+	jb	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$common_seh_tail
+	jae	NEAR $L$common_seh_tail
 
-	mov	rax,QWORD PTR[232+r8]
+	mov	rax,QWORD[232+r8]
 
-	lea	rsi,QWORD PTR[((-40-96))+rax]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[((-40-96))+rax]
+	lea	rdi,[512+r8]
 	mov	ecx,12
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
 
-$L$common_seh_tail::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$common_seh_tail:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -2593,27 +2595,22 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-ssse3_handler	ENDP
 
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
+
+section	.pdata rdata align=4
 ALIGN	4
-	DD	imagerel $L$SEH_begin_sha1_block_data_order
-	DD	imagerel $L$SEH_end_sha1_block_data_order
-	DD	imagerel $L$SEH_info_sha1_block_data_order
-	DD	imagerel $L$SEH_begin_sha1_block_data_order_ssse3
-	DD	imagerel $L$SEH_end_sha1_block_data_order_ssse3
-	DD	imagerel $L$SEH_info_sha1_block_data_order_ssse3
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
+	DD	$L$SEH_begin_sha1_block_data_order wrt ..imagebase
+	DD	$L$SEH_end_sha1_block_data_order wrt ..imagebase
+	DD	$L$SEH_info_sha1_block_data_order wrt ..imagebase
+	DD	$L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase
+	DD	$L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase
+	DD	$L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase
+section	.xdata rdata align=8
 ALIGN	8
-$L$SEH_info_sha1_block_data_order::
+$L$SEH_info_sha1_block_data_order:
 DB	9,0,0,0
-	DD	imagerel se_handler
-$L$SEH_info_sha1_block_data_order_ssse3::
+	DD	se_handler wrt ..imagebase
+$L$SEH_info_sha1_block_data_order_ssse3:
 DB	9,0,0,0
-	DD	imagerel ssse3_handler
-	DD	imagerel $L$prologue_ssse3,imagerel $L$epilogue_ssse3
-
-.xdata	ENDS
-END
+	DD	ssse3_handler wrt ..imagebase
+	DD	$L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm
index 41f2edd..e6193c5 100644
--- a/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm
@@ -1,26 +1,30 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-EXTERN	OPENSSL_ia32cap_P:NEAR
-PUBLIC	sha256_block_data_order
+
+EXTERN	OPENSSL_ia32cap_P
+global	sha256_block_data_order
 
 ALIGN	16
-sha256_block_data_order	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+sha256_block_data_order:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_sha256_block_data_order::
+$L$SEH_begin_sha256_block_data_order:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-	lea	r11,QWORD PTR[OPENSSL_ia32cap_P]
-	mov	r9d,DWORD PTR[r11]
-	mov	r10d,DWORD PTR[4+r11]
-	mov	r11d,DWORD PTR[8+r11]
+	lea	r11,[OPENSSL_ia32cap_P]
+	mov	r9d,DWORD[r11]
+	mov	r10d,DWORD[4+r11]
+	mov	r11d,DWORD[8+r11]
 	test	r10d,512
-	jnz	$L$ssse3_shortcut
+	jnz	NEAR $L$ssse3_shortcut
 	push	rbx
 	push	rbp
 	push	r12
@@ -30,30 +34,30 @@
 	mov	r11,rsp
 	shl	rdx,4
 	sub	rsp,16*4+4*8
-	lea	rdx,QWORD PTR[rdx*4+rsi]
+	lea	rdx,[rdx*4+rsi]
 	and	rsp,-64
-	mov	QWORD PTR[((64+0))+rsp],rdi
-	mov	QWORD PTR[((64+8))+rsp],rsi
-	mov	QWORD PTR[((64+16))+rsp],rdx
-	mov	QWORD PTR[((64+24))+rsp],r11
-$L$prologue::
+	mov	QWORD[((64+0))+rsp],rdi
+	mov	QWORD[((64+8))+rsp],rsi
+	mov	QWORD[((64+16))+rsp],rdx
+	mov	QWORD[((64+24))+rsp],r11
+$L$prologue:
 
-	mov	eax,DWORD PTR[rdi]
-	mov	ebx,DWORD PTR[4+rdi]
-	mov	ecx,DWORD PTR[8+rdi]
-	mov	edx,DWORD PTR[12+rdi]
-	mov	r8d,DWORD PTR[16+rdi]
-	mov	r9d,DWORD PTR[20+rdi]
-	mov	r10d,DWORD PTR[24+rdi]
-	mov	r11d,DWORD PTR[28+rdi]
-	jmp	$L$loop
+	mov	eax,DWORD[rdi]
+	mov	ebx,DWORD[4+rdi]
+	mov	ecx,DWORD[8+rdi]
+	mov	edx,DWORD[12+rdi]
+	mov	r8d,DWORD[16+rdi]
+	mov	r9d,DWORD[20+rdi]
+	mov	r10d,DWORD[24+rdi]
+	mov	r11d,DWORD[28+rdi]
+	jmp	NEAR $L$loop
 
 ALIGN	16
-$L$loop::
+$L$loop:
 	mov	edi,ebx
-	lea	rbp,QWORD PTR[K256]
+	lea	rbp,[K256]
 	xor	edi,ecx
-	mov	r12d,DWORD PTR[rsi]
+	mov	r12d,DWORD[rsi]
 	mov	r13d,r8d
 	mov	r14d,eax
 	bswap	r12d
@@ -64,7 +68,7 @@
 	ror	r14d,9
 	xor	r15d,r10d
 
-	mov	DWORD PTR[rsp],r12d
+	mov	DWORD[rsp],r12d
 	xor	r14d,eax
 	and	r15d,r8d
 
@@ -77,7 +81,7 @@
 	add	r12d,r15d
 
 	mov	r15d,eax
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,eax
 
 	xor	r15d,ebx
@@ -92,9 +96,9 @@
 	add	edx,r12d
 	add	r11d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	r11d,r14d
-	mov	r12d,DWORD PTR[4+rsi]
+	mov	r12d,DWORD[4+rsi]
 	mov	r13d,edx
 	mov	r14d,r11d
 	bswap	r12d
@@ -105,7 +109,7 @@
 	ror	r14d,9
 	xor	edi,r9d
 
-	mov	DWORD PTR[4+rsp],r12d
+	mov	DWORD[4+rsp],r12d
 	xor	r14d,r11d
 	and	edi,edx
 
@@ -118,7 +122,7 @@
 	add	r12d,edi
 
 	mov	edi,r11d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r11d
 
 	xor	edi,eax
@@ -133,9 +137,9 @@
 	add	ecx,r12d
 	add	r10d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	r10d,r14d
-	mov	r12d,DWORD PTR[8+rsi]
+	mov	r12d,DWORD[8+rsi]
 	mov	r13d,ecx
 	mov	r14d,r10d
 	bswap	r12d
@@ -146,7 +150,7 @@
 	ror	r14d,9
 	xor	r15d,r8d
 
-	mov	DWORD PTR[8+rsp],r12d
+	mov	DWORD[8+rsp],r12d
 	xor	r14d,r10d
 	and	r15d,ecx
 
@@ -159,7 +163,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r10d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r10d
 
 	xor	r15d,r11d
@@ -174,9 +178,9 @@
 	add	ebx,r12d
 	add	r9d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	r9d,r14d
-	mov	r12d,DWORD PTR[12+rsi]
+	mov	r12d,DWORD[12+rsi]
 	mov	r13d,ebx
 	mov	r14d,r9d
 	bswap	r12d
@@ -187,7 +191,7 @@
 	ror	r14d,9
 	xor	edi,edx
 
-	mov	DWORD PTR[12+rsp],r12d
+	mov	DWORD[12+rsp],r12d
 	xor	r14d,r9d
 	and	edi,ebx
 
@@ -200,7 +204,7 @@
 	add	r12d,edi
 
 	mov	edi,r9d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r9d
 
 	xor	edi,r10d
@@ -215,9 +219,9 @@
 	add	eax,r12d
 	add	r8d,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
+	lea	rbp,[20+rbp]
 	add	r8d,r14d
-	mov	r12d,DWORD PTR[16+rsi]
+	mov	r12d,DWORD[16+rsi]
 	mov	r13d,eax
 	mov	r14d,r8d
 	bswap	r12d
@@ -228,7 +232,7 @@
 	ror	r14d,9
 	xor	r15d,ecx
 
-	mov	DWORD PTR[16+rsp],r12d
+	mov	DWORD[16+rsp],r12d
 	xor	r14d,r8d
 	and	r15d,eax
 
@@ -241,7 +245,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r8d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r8d
 
 	xor	r15d,r9d
@@ -256,9 +260,9 @@
 	add	r11d,r12d
 	add	edx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	edx,r14d
-	mov	r12d,DWORD PTR[20+rsi]
+	mov	r12d,DWORD[20+rsi]
 	mov	r13d,r11d
 	mov	r14d,edx
 	bswap	r12d
@@ -269,7 +273,7 @@
 	ror	r14d,9
 	xor	edi,ebx
 
-	mov	DWORD PTR[20+rsp],r12d
+	mov	DWORD[20+rsp],r12d
 	xor	r14d,edx
 	and	edi,r11d
 
@@ -282,7 +286,7 @@
 	add	r12d,edi
 
 	mov	edi,edx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,edx
 
 	xor	edi,r8d
@@ -297,9 +301,9 @@
 	add	r10d,r12d
 	add	ecx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	ecx,r14d
-	mov	r12d,DWORD PTR[24+rsi]
+	mov	r12d,DWORD[24+rsi]
 	mov	r13d,r10d
 	mov	r14d,ecx
 	bswap	r12d
@@ -310,7 +314,7 @@
 	ror	r14d,9
 	xor	r15d,eax
 
-	mov	DWORD PTR[24+rsp],r12d
+	mov	DWORD[24+rsp],r12d
 	xor	r14d,ecx
 	and	r15d,r10d
 
@@ -323,7 +327,7 @@
 	add	r12d,r15d
 
 	mov	r15d,ecx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ecx
 
 	xor	r15d,edx
@@ -338,9 +342,9 @@
 	add	r9d,r12d
 	add	ebx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	ebx,r14d
-	mov	r12d,DWORD PTR[28+rsi]
+	mov	r12d,DWORD[28+rsi]
 	mov	r13d,r9d
 	mov	r14d,ebx
 	bswap	r12d
@@ -351,7 +355,7 @@
 	ror	r14d,9
 	xor	edi,r11d
 
-	mov	DWORD PTR[28+rsp],r12d
+	mov	DWORD[28+rsp],r12d
 	xor	r14d,ebx
 	and	edi,r9d
 
@@ -364,7 +368,7 @@
 	add	r12d,edi
 
 	mov	edi,ebx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ebx
 
 	xor	edi,ecx
@@ -379,9 +383,9 @@
 	add	r8d,r12d
 	add	eax,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
+	lea	rbp,[20+rbp]
 	add	eax,r14d
-	mov	r12d,DWORD PTR[32+rsi]
+	mov	r12d,DWORD[32+rsi]
 	mov	r13d,r8d
 	mov	r14d,eax
 	bswap	r12d
@@ -392,7 +396,7 @@
 	ror	r14d,9
 	xor	r15d,r10d
 
-	mov	DWORD PTR[32+rsp],r12d
+	mov	DWORD[32+rsp],r12d
 	xor	r14d,eax
 	and	r15d,r8d
 
@@ -405,7 +409,7 @@
 	add	r12d,r15d
 
 	mov	r15d,eax
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,eax
 
 	xor	r15d,ebx
@@ -420,9 +424,9 @@
 	add	edx,r12d
 	add	r11d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	r11d,r14d
-	mov	r12d,DWORD PTR[36+rsi]
+	mov	r12d,DWORD[36+rsi]
 	mov	r13d,edx
 	mov	r14d,r11d
 	bswap	r12d
@@ -433,7 +437,7 @@
 	ror	r14d,9
 	xor	edi,r9d
 
-	mov	DWORD PTR[36+rsp],r12d
+	mov	DWORD[36+rsp],r12d
 	xor	r14d,r11d
 	and	edi,edx
 
@@ -446,7 +450,7 @@
 	add	r12d,edi
 
 	mov	edi,r11d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r11d
 
 	xor	edi,eax
@@ -461,9 +465,9 @@
 	add	ecx,r12d
 	add	r10d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	r10d,r14d
-	mov	r12d,DWORD PTR[40+rsi]
+	mov	r12d,DWORD[40+rsi]
 	mov	r13d,ecx
 	mov	r14d,r10d
 	bswap	r12d
@@ -474,7 +478,7 @@
 	ror	r14d,9
 	xor	r15d,r8d
 
-	mov	DWORD PTR[40+rsp],r12d
+	mov	DWORD[40+rsp],r12d
 	xor	r14d,r10d
 	and	r15d,ecx
 
@@ -487,7 +491,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r10d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r10d
 
 	xor	r15d,r11d
@@ -502,9 +506,9 @@
 	add	ebx,r12d
 	add	r9d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	r9d,r14d
-	mov	r12d,DWORD PTR[44+rsi]
+	mov	r12d,DWORD[44+rsi]
 	mov	r13d,ebx
 	mov	r14d,r9d
 	bswap	r12d
@@ -515,7 +519,7 @@
 	ror	r14d,9
 	xor	edi,edx
 
-	mov	DWORD PTR[44+rsp],r12d
+	mov	DWORD[44+rsp],r12d
 	xor	r14d,r9d
 	and	edi,ebx
 
@@ -528,7 +532,7 @@
 	add	r12d,edi
 
 	mov	edi,r9d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r9d
 
 	xor	edi,r10d
@@ -543,9 +547,9 @@
 	add	eax,r12d
 	add	r8d,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
+	lea	rbp,[20+rbp]
 	add	r8d,r14d
-	mov	r12d,DWORD PTR[48+rsi]
+	mov	r12d,DWORD[48+rsi]
 	mov	r13d,eax
 	mov	r14d,r8d
 	bswap	r12d
@@ -556,7 +560,7 @@
 	ror	r14d,9
 	xor	r15d,ecx
 
-	mov	DWORD PTR[48+rsp],r12d
+	mov	DWORD[48+rsp],r12d
 	xor	r14d,r8d
 	and	r15d,eax
 
@@ -569,7 +573,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r8d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r8d
 
 	xor	r15d,r9d
@@ -584,9 +588,9 @@
 	add	r11d,r12d
 	add	edx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	edx,r14d
-	mov	r12d,DWORD PTR[52+rsi]
+	mov	r12d,DWORD[52+rsi]
 	mov	r13d,r11d
 	mov	r14d,edx
 	bswap	r12d
@@ -597,7 +601,7 @@
 	ror	r14d,9
 	xor	edi,ebx
 
-	mov	DWORD PTR[52+rsp],r12d
+	mov	DWORD[52+rsp],r12d
 	xor	r14d,edx
 	and	edi,r11d
 
@@ -610,7 +614,7 @@
 	add	r12d,edi
 
 	mov	edi,edx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,edx
 
 	xor	edi,r8d
@@ -625,9 +629,9 @@
 	add	r10d,r12d
 	add	ecx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	ecx,r14d
-	mov	r12d,DWORD PTR[56+rsi]
+	mov	r12d,DWORD[56+rsi]
 	mov	r13d,r10d
 	mov	r14d,ecx
 	bswap	r12d
@@ -638,7 +642,7 @@
 	ror	r14d,9
 	xor	r15d,eax
 
-	mov	DWORD PTR[56+rsp],r12d
+	mov	DWORD[56+rsp],r12d
 	xor	r14d,ecx
 	and	r15d,r10d
 
@@ -651,7 +655,7 @@
 	add	r12d,r15d
 
 	mov	r15d,ecx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ecx
 
 	xor	r15d,edx
@@ -666,9 +670,9 @@
 	add	r9d,r12d
 	add	ebx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
+	lea	rbp,[4+rbp]
 	add	ebx,r14d
-	mov	r12d,DWORD PTR[60+rsi]
+	mov	r12d,DWORD[60+rsi]
 	mov	r13d,r9d
 	mov	r14d,ebx
 	bswap	r12d
@@ -679,7 +683,7 @@
 	ror	r14d,9
 	xor	edi,r11d
 
-	mov	DWORD PTR[60+rsp],r12d
+	mov	DWORD[60+rsp],r12d
 	xor	r14d,ebx
 	and	edi,r9d
 
@@ -692,7 +696,7 @@
 	add	r12d,edi
 
 	mov	edi,ebx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ebx
 
 	xor	edi,ecx
@@ -707,12 +711,12 @@
 	add	r8d,r12d
 	add	eax,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
-	jmp	$L$rounds_16_xx
+	lea	rbp,[20+rbp]
+	jmp	NEAR $L$rounds_16_xx
 ALIGN	16
-$L$rounds_16_xx::
-	mov	r13d,DWORD PTR[4+rsp]
-	mov	r15d,DWORD PTR[56+rsp]
+$L$rounds_16_xx:
+	mov	r13d,DWORD[4+rsp]
+	mov	r15d,DWORD[56+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -729,9 +733,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[36+rsp]
+	add	r12d,DWORD[36+rsp]
 
-	add	r12d,DWORD PTR[rsp]
+	add	r12d,DWORD[rsp]
 	mov	r13d,r8d
 	add	r12d,r15d
 	mov	r14d,eax
@@ -742,7 +746,7 @@
 	ror	r14d,9
 	xor	r15d,r10d
 
-	mov	DWORD PTR[rsp],r12d
+	mov	DWORD[rsp],r12d
 	xor	r14d,eax
 	and	r15d,r8d
 
@@ -755,7 +759,7 @@
 	add	r12d,r15d
 
 	mov	r15d,eax
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,eax
 
 	xor	r15d,ebx
@@ -770,9 +774,9 @@
 	add	edx,r12d
 	add	r11d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[8+rsp]
-	mov	edi,DWORD PTR[60+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[8+rsp]
+	mov	edi,DWORD[60+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -789,9 +793,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[40+rsp]
+	add	r12d,DWORD[40+rsp]
 
-	add	r12d,DWORD PTR[4+rsp]
+	add	r12d,DWORD[4+rsp]
 	mov	r13d,edx
 	add	r12d,edi
 	mov	r14d,r11d
@@ -802,7 +806,7 @@
 	ror	r14d,9
 	xor	edi,r9d
 
-	mov	DWORD PTR[4+rsp],r12d
+	mov	DWORD[4+rsp],r12d
 	xor	r14d,r11d
 	and	edi,edx
 
@@ -815,7 +819,7 @@
 	add	r12d,edi
 
 	mov	edi,r11d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r11d
 
 	xor	edi,eax
@@ -830,9 +834,9 @@
 	add	ecx,r12d
 	add	r10d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[12+rsp]
-	mov	r15d,DWORD PTR[rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[12+rsp]
+	mov	r15d,DWORD[rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -849,9 +853,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[44+rsp]
+	add	r12d,DWORD[44+rsp]
 
-	add	r12d,DWORD PTR[8+rsp]
+	add	r12d,DWORD[8+rsp]
 	mov	r13d,ecx
 	add	r12d,r15d
 	mov	r14d,r10d
@@ -862,7 +866,7 @@
 	ror	r14d,9
 	xor	r15d,r8d
 
-	mov	DWORD PTR[8+rsp],r12d
+	mov	DWORD[8+rsp],r12d
 	xor	r14d,r10d
 	and	r15d,ecx
 
@@ -875,7 +879,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r10d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r10d
 
 	xor	r15d,r11d
@@ -890,9 +894,9 @@
 	add	ebx,r12d
 	add	r9d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[16+rsp]
-	mov	edi,DWORD PTR[4+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[16+rsp]
+	mov	edi,DWORD[4+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -909,9 +913,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[48+rsp]
+	add	r12d,DWORD[48+rsp]
 
-	add	r12d,DWORD PTR[12+rsp]
+	add	r12d,DWORD[12+rsp]
 	mov	r13d,ebx
 	add	r12d,edi
 	mov	r14d,r9d
@@ -922,7 +926,7 @@
 	ror	r14d,9
 	xor	edi,edx
 
-	mov	DWORD PTR[12+rsp],r12d
+	mov	DWORD[12+rsp],r12d
 	xor	r14d,r9d
 	and	edi,ebx
 
@@ -935,7 +939,7 @@
 	add	r12d,edi
 
 	mov	edi,r9d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r9d
 
 	xor	edi,r10d
@@ -950,9 +954,9 @@
 	add	eax,r12d
 	add	r8d,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
-	mov	r13d,DWORD PTR[20+rsp]
-	mov	r15d,DWORD PTR[8+rsp]
+	lea	rbp,[20+rbp]
+	mov	r13d,DWORD[20+rsp]
+	mov	r15d,DWORD[8+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -969,9 +973,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[52+rsp]
+	add	r12d,DWORD[52+rsp]
 
-	add	r12d,DWORD PTR[16+rsp]
+	add	r12d,DWORD[16+rsp]
 	mov	r13d,eax
 	add	r12d,r15d
 	mov	r14d,r8d
@@ -982,7 +986,7 @@
 	ror	r14d,9
 	xor	r15d,ecx
 
-	mov	DWORD PTR[16+rsp],r12d
+	mov	DWORD[16+rsp],r12d
 	xor	r14d,r8d
 	and	r15d,eax
 
@@ -995,7 +999,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r8d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r8d
 
 	xor	r15d,r9d
@@ -1010,9 +1014,9 @@
 	add	r11d,r12d
 	add	edx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[24+rsp]
-	mov	edi,DWORD PTR[12+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[24+rsp]
+	mov	edi,DWORD[12+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1029,9 +1033,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[56+rsp]
+	add	r12d,DWORD[56+rsp]
 
-	add	r12d,DWORD PTR[20+rsp]
+	add	r12d,DWORD[20+rsp]
 	mov	r13d,r11d
 	add	r12d,edi
 	mov	r14d,edx
@@ -1042,7 +1046,7 @@
 	ror	r14d,9
 	xor	edi,ebx
 
-	mov	DWORD PTR[20+rsp],r12d
+	mov	DWORD[20+rsp],r12d
 	xor	r14d,edx
 	and	edi,r11d
 
@@ -1055,7 +1059,7 @@
 	add	r12d,edi
 
 	mov	edi,edx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,edx
 
 	xor	edi,r8d
@@ -1070,9 +1074,9 @@
 	add	r10d,r12d
 	add	ecx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[28+rsp]
-	mov	r15d,DWORD PTR[16+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[28+rsp]
+	mov	r15d,DWORD[16+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1089,9 +1093,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[60+rsp]
+	add	r12d,DWORD[60+rsp]
 
-	add	r12d,DWORD PTR[24+rsp]
+	add	r12d,DWORD[24+rsp]
 	mov	r13d,r10d
 	add	r12d,r15d
 	mov	r14d,ecx
@@ -1102,7 +1106,7 @@
 	ror	r14d,9
 	xor	r15d,eax
 
-	mov	DWORD PTR[24+rsp],r12d
+	mov	DWORD[24+rsp],r12d
 	xor	r14d,ecx
 	and	r15d,r10d
 
@@ -1115,7 +1119,7 @@
 	add	r12d,r15d
 
 	mov	r15d,ecx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ecx
 
 	xor	r15d,edx
@@ -1130,9 +1134,9 @@
 	add	r9d,r12d
 	add	ebx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[32+rsp]
-	mov	edi,DWORD PTR[20+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[32+rsp]
+	mov	edi,DWORD[20+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1149,9 +1153,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[rsp]
+	add	r12d,DWORD[rsp]
 
-	add	r12d,DWORD PTR[28+rsp]
+	add	r12d,DWORD[28+rsp]
 	mov	r13d,r9d
 	add	r12d,edi
 	mov	r14d,ebx
@@ -1162,7 +1166,7 @@
 	ror	r14d,9
 	xor	edi,r11d
 
-	mov	DWORD PTR[28+rsp],r12d
+	mov	DWORD[28+rsp],r12d
 	xor	r14d,ebx
 	and	edi,r9d
 
@@ -1175,7 +1179,7 @@
 	add	r12d,edi
 
 	mov	edi,ebx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ebx
 
 	xor	edi,ecx
@@ -1190,9 +1194,9 @@
 	add	r8d,r12d
 	add	eax,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
-	mov	r13d,DWORD PTR[36+rsp]
-	mov	r15d,DWORD PTR[24+rsp]
+	lea	rbp,[20+rbp]
+	mov	r13d,DWORD[36+rsp]
+	mov	r15d,DWORD[24+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1209,9 +1213,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[4+rsp]
+	add	r12d,DWORD[4+rsp]
 
-	add	r12d,DWORD PTR[32+rsp]
+	add	r12d,DWORD[32+rsp]
 	mov	r13d,r8d
 	add	r12d,r15d
 	mov	r14d,eax
@@ -1222,7 +1226,7 @@
 	ror	r14d,9
 	xor	r15d,r10d
 
-	mov	DWORD PTR[32+rsp],r12d
+	mov	DWORD[32+rsp],r12d
 	xor	r14d,eax
 	and	r15d,r8d
 
@@ -1235,7 +1239,7 @@
 	add	r12d,r15d
 
 	mov	r15d,eax
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,eax
 
 	xor	r15d,ebx
@@ -1250,9 +1254,9 @@
 	add	edx,r12d
 	add	r11d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[40+rsp]
-	mov	edi,DWORD PTR[28+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[40+rsp]
+	mov	edi,DWORD[28+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1269,9 +1273,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[8+rsp]
+	add	r12d,DWORD[8+rsp]
 
-	add	r12d,DWORD PTR[36+rsp]
+	add	r12d,DWORD[36+rsp]
 	mov	r13d,edx
 	add	r12d,edi
 	mov	r14d,r11d
@@ -1282,7 +1286,7 @@
 	ror	r14d,9
 	xor	edi,r9d
 
-	mov	DWORD PTR[36+rsp],r12d
+	mov	DWORD[36+rsp],r12d
 	xor	r14d,r11d
 	and	edi,edx
 
@@ -1295,7 +1299,7 @@
 	add	r12d,edi
 
 	mov	edi,r11d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r11d
 
 	xor	edi,eax
@@ -1310,9 +1314,9 @@
 	add	ecx,r12d
 	add	r10d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[44+rsp]
-	mov	r15d,DWORD PTR[32+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[44+rsp]
+	mov	r15d,DWORD[32+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1329,9 +1333,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[12+rsp]
+	add	r12d,DWORD[12+rsp]
 
-	add	r12d,DWORD PTR[40+rsp]
+	add	r12d,DWORD[40+rsp]
 	mov	r13d,ecx
 	add	r12d,r15d
 	mov	r14d,r10d
@@ -1342,7 +1346,7 @@
 	ror	r14d,9
 	xor	r15d,r8d
 
-	mov	DWORD PTR[40+rsp],r12d
+	mov	DWORD[40+rsp],r12d
 	xor	r14d,r10d
 	and	r15d,ecx
 
@@ -1355,7 +1359,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r10d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r10d
 
 	xor	r15d,r11d
@@ -1370,9 +1374,9 @@
 	add	ebx,r12d
 	add	r9d,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[48+rsp]
-	mov	edi,DWORD PTR[36+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[48+rsp]
+	mov	edi,DWORD[36+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1389,9 +1393,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[16+rsp]
+	add	r12d,DWORD[16+rsp]
 
-	add	r12d,DWORD PTR[44+rsp]
+	add	r12d,DWORD[44+rsp]
 	mov	r13d,ebx
 	add	r12d,edi
 	mov	r14d,r9d
@@ -1402,7 +1406,7 @@
 	ror	r14d,9
 	xor	edi,edx
 
-	mov	DWORD PTR[44+rsp],r12d
+	mov	DWORD[44+rsp],r12d
 	xor	r14d,r9d
 	and	edi,ebx
 
@@ -1415,7 +1419,7 @@
 	add	r12d,edi
 
 	mov	edi,r9d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r9d
 
 	xor	edi,r10d
@@ -1430,9 +1434,9 @@
 	add	eax,r12d
 	add	r8d,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
-	mov	r13d,DWORD PTR[52+rsp]
-	mov	r15d,DWORD PTR[40+rsp]
+	lea	rbp,[20+rbp]
+	mov	r13d,DWORD[52+rsp]
+	mov	r15d,DWORD[40+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1449,9 +1453,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[20+rsp]
+	add	r12d,DWORD[20+rsp]
 
-	add	r12d,DWORD PTR[48+rsp]
+	add	r12d,DWORD[48+rsp]
 	mov	r13d,eax
 	add	r12d,r15d
 	mov	r14d,r8d
@@ -1462,7 +1466,7 @@
 	ror	r14d,9
 	xor	r15d,ecx
 
-	mov	DWORD PTR[48+rsp],r12d
+	mov	DWORD[48+rsp],r12d
 	xor	r14d,r8d
 	and	r15d,eax
 
@@ -1475,7 +1479,7 @@
 	add	r12d,r15d
 
 	mov	r15d,r8d
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,r8d
 
 	xor	r15d,r9d
@@ -1490,9 +1494,9 @@
 	add	r11d,r12d
 	add	edx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[56+rsp]
-	mov	edi,DWORD PTR[44+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[56+rsp]
+	mov	edi,DWORD[44+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1509,9 +1513,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[24+rsp]
+	add	r12d,DWORD[24+rsp]
 
-	add	r12d,DWORD PTR[52+rsp]
+	add	r12d,DWORD[52+rsp]
 	mov	r13d,r11d
 	add	r12d,edi
 	mov	r14d,edx
@@ -1522,7 +1526,7 @@
 	ror	r14d,9
 	xor	edi,ebx
 
-	mov	DWORD PTR[52+rsp],r12d
+	mov	DWORD[52+rsp],r12d
 	xor	r14d,edx
 	and	edi,r11d
 
@@ -1535,7 +1539,7 @@
 	add	r12d,edi
 
 	mov	edi,edx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,edx
 
 	xor	edi,r8d
@@ -1550,9 +1554,9 @@
 	add	r10d,r12d
 	add	ecx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[60+rsp]
-	mov	r15d,DWORD PTR[48+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[60+rsp]
+	mov	r15d,DWORD[48+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1569,9 +1573,9 @@
 	ror	r15d,17
 	xor	r12d,r13d
 	xor	r15d,r14d
-	add	r12d,DWORD PTR[28+rsp]
+	add	r12d,DWORD[28+rsp]
 
-	add	r12d,DWORD PTR[56+rsp]
+	add	r12d,DWORD[56+rsp]
 	mov	r13d,r10d
 	add	r12d,r15d
 	mov	r14d,ecx
@@ -1582,7 +1586,7 @@
 	ror	r14d,9
 	xor	r15d,eax
 
-	mov	DWORD PTR[56+rsp],r12d
+	mov	DWORD[56+rsp],r12d
 	xor	r14d,ecx
 	and	r15d,r10d
 
@@ -1595,7 +1599,7 @@
 	add	r12d,r15d
 
 	mov	r15d,ecx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ecx
 
 	xor	r15d,edx
@@ -1610,9 +1614,9 @@
 	add	r9d,r12d
 	add	ebx,r12d
 
-	lea	rbp,QWORD PTR[4+rbp]
-	mov	r13d,DWORD PTR[rsp]
-	mov	edi,DWORD PTR[52+rsp]
+	lea	rbp,[4+rbp]
+	mov	r13d,DWORD[rsp]
+	mov	edi,DWORD[52+rsp]
 
 	mov	r12d,r13d
 	ror	r13d,11
@@ -1629,9 +1633,9 @@
 	ror	edi,17
 	xor	r12d,r13d
 	xor	edi,r14d
-	add	r12d,DWORD PTR[32+rsp]
+	add	r12d,DWORD[32+rsp]
 
-	add	r12d,DWORD PTR[60+rsp]
+	add	r12d,DWORD[60+rsp]
 	mov	r13d,r9d
 	add	r12d,edi
 	mov	r14d,ebx
@@ -1642,7 +1646,7 @@
 	ror	r14d,9
 	xor	edi,r11d
 
-	mov	DWORD PTR[60+rsp],r12d
+	mov	DWORD[60+rsp],r12d
 	xor	r14d,ebx
 	and	edi,r9d
 
@@ -1655,7 +1659,7 @@
 	add	r12d,edi
 
 	mov	edi,ebx
-	add	r12d,DWORD PTR[rbp]
+	add	r12d,DWORD[rbp]
 	xor	r14d,ebx
 
 	xor	edi,ecx
@@ -1670,91 +1674,90 @@
 	add	r8d,r12d
 	add	eax,r12d
 
-	lea	rbp,QWORD PTR[20+rbp]
-	cmp	BYTE PTR[3+rbp],0
-	jnz	$L$rounds_16_xx
+	lea	rbp,[20+rbp]
+	cmp	BYTE[3+rbp],0
+	jnz	NEAR $L$rounds_16_xx
 
-	mov	rdi,QWORD PTR[((64+0))+rsp]
+	mov	rdi,QWORD[((64+0))+rsp]
 	add	eax,r14d
-	lea	rsi,QWORD PTR[64+rsi]
+	lea	rsi,[64+rsi]
 
-	add	eax,DWORD PTR[rdi]
-	add	ebx,DWORD PTR[4+rdi]
-	add	ecx,DWORD PTR[8+rdi]
-	add	edx,DWORD PTR[12+rdi]
-	add	r8d,DWORD PTR[16+rdi]
-	add	r9d,DWORD PTR[20+rdi]
-	add	r10d,DWORD PTR[24+rdi]
-	add	r11d,DWORD PTR[28+rdi]
+	add	eax,DWORD[rdi]
+	add	ebx,DWORD[4+rdi]
+	add	ecx,DWORD[8+rdi]
+	add	edx,DWORD[12+rdi]
+	add	r8d,DWORD[16+rdi]
+	add	r9d,DWORD[20+rdi]
+	add	r10d,DWORD[24+rdi]
+	add	r11d,DWORD[28+rdi]
 
-	cmp	rsi,QWORD PTR[((64+16))+rsp]
+	cmp	rsi,QWORD[((64+16))+rsp]
 
-	mov	DWORD PTR[rdi],eax
-	mov	DWORD PTR[4+rdi],ebx
-	mov	DWORD PTR[8+rdi],ecx
-	mov	DWORD PTR[12+rdi],edx
-	mov	DWORD PTR[16+rdi],r8d
-	mov	DWORD PTR[20+rdi],r9d
-	mov	DWORD PTR[24+rdi],r10d
-	mov	DWORD PTR[28+rdi],r11d
-	jb	$L$loop
+	mov	DWORD[rdi],eax
+	mov	DWORD[4+rdi],ebx
+	mov	DWORD[8+rdi],ecx
+	mov	DWORD[12+rdi],edx
+	mov	DWORD[16+rdi],r8d
+	mov	DWORD[20+rdi],r9d
+	mov	DWORD[24+rdi],r10d
+	mov	DWORD[28+rdi],r11d
+	jb	NEAR $L$loop
 
-	mov	rsi,QWORD PTR[((64+24))+rsp]
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rsi,QWORD[((64+24))+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_sha256_block_data_order::
-sha256_block_data_order	ENDP
+$L$SEH_end_sha256_block_data_order:
 ALIGN	64
 
-K256::
-	DD	0428a2f98h,071374491h,0b5c0fbcfh,0e9b5dba5h
-	DD	0428a2f98h,071374491h,0b5c0fbcfh,0e9b5dba5h
-	DD	03956c25bh,059f111f1h,0923f82a4h,0ab1c5ed5h
-	DD	03956c25bh,059f111f1h,0923f82a4h,0ab1c5ed5h
-	DD	0d807aa98h,012835b01h,0243185beh,0550c7dc3h
-	DD	0d807aa98h,012835b01h,0243185beh,0550c7dc3h
-	DD	072be5d74h,080deb1feh,09bdc06a7h,0c19bf174h
-	DD	072be5d74h,080deb1feh,09bdc06a7h,0c19bf174h
-	DD	0e49b69c1h,0efbe4786h,00fc19dc6h,0240ca1cch
-	DD	0e49b69c1h,0efbe4786h,00fc19dc6h,0240ca1cch
-	DD	02de92c6fh,04a7484aah,05cb0a9dch,076f988dah
-	DD	02de92c6fh,04a7484aah,05cb0a9dch,076f988dah
-	DD	0983e5152h,0a831c66dh,0b00327c8h,0bf597fc7h
-	DD	0983e5152h,0a831c66dh,0b00327c8h,0bf597fc7h
-	DD	0c6e00bf3h,0d5a79147h,006ca6351h,014292967h
-	DD	0c6e00bf3h,0d5a79147h,006ca6351h,014292967h
-	DD	027b70a85h,02e1b2138h,04d2c6dfch,053380d13h
-	DD	027b70a85h,02e1b2138h,04d2c6dfch,053380d13h
-	DD	0650a7354h,0766a0abbh,081c2c92eh,092722c85h
-	DD	0650a7354h,0766a0abbh,081c2c92eh,092722c85h
-	DD	0a2bfe8a1h,0a81a664bh,0c24b8b70h,0c76c51a3h
-	DD	0a2bfe8a1h,0a81a664bh,0c24b8b70h,0c76c51a3h
-	DD	0d192e819h,0d6990624h,0f40e3585h,0106aa070h
-	DD	0d192e819h,0d6990624h,0f40e3585h,0106aa070h
-	DD	019a4c116h,01e376c08h,02748774ch,034b0bcb5h
-	DD	019a4c116h,01e376c08h,02748774ch,034b0bcb5h
-	DD	0391c0cb3h,04ed8aa4ah,05b9cca4fh,0682e6ff3h
-	DD	0391c0cb3h,04ed8aa4ah,05b9cca4fh,0682e6ff3h
-	DD	0748f82eeh,078a5636fh,084c87814h,08cc70208h
-	DD	0748f82eeh,078a5636fh,084c87814h,08cc70208h
-	DD	090befffah,0a4506cebh,0bef9a3f7h,0c67178f2h
-	DD	090befffah,0a4506cebh,0bef9a3f7h,0c67178f2h
+K256:
+	DD	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
+	DD	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
+	DD	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
+	DD	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
+	DD	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
+	DD	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
+	DD	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
+	DD	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
+	DD	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
+	DD	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
+	DD	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
+	DD	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
+	DD	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
+	DD	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
+	DD	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
+	DD	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
+	DD	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
+	DD	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
+	DD	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
+	DD	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
+	DD	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
+	DD	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
+	DD	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
+	DD	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
+	DD	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
+	DD	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
+	DD	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
+	DD	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
+	DD	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
+	DD	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
+	DD	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
+	DD	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
 
-	DD	000010203h,004050607h,008090a0bh,00c0d0e0fh
-	DD	000010203h,004050607h,008090a0bh,00c0d0e0fh
-	DD	003020100h,00b0a0908h,0ffffffffh,0ffffffffh
-	DD	003020100h,00b0a0908h,0ffffffffh,0ffffffffh
-	DD	0ffffffffh,0ffffffffh,003020100h,00b0a0908h
-	DD	0ffffffffh,0ffffffffh,003020100h,00b0a0908h
+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+	DD	0x03020100,0x0b0a0908,0xffffffff,0xffffffff
+	DD	0x03020100,0x0b0a0908,0xffffffff,0xffffffff
+	DD	0xffffffff,0xffffffff,0x03020100,0x0b0a0908
+	DD	0xffffffff,0xffffffff,0x03020100,0x0b0a0908
 DB	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
 DB	110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
 DB	52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
@@ -1762,17 +1765,17 @@
 DB	111,114,103,62,0
 
 ALIGN	64
-sha256_block_data_order_ssse3	PROC PRIVATE
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+sha256_block_data_order_ssse3:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_sha256_block_data_order_ssse3::
+$L$SEH_begin_sha256_block_data_order_ssse3:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
 
 
-$L$ssse3_shortcut::
+$L$ssse3_shortcut:
 	push	rbx
 	push	rbp
 	push	r12
@@ -1782,61 +1785,61 @@
 	mov	r11,rsp
 	shl	rdx,4
 	sub	rsp,160
-	lea	rdx,QWORD PTR[rdx*4+rsi]
+	lea	rdx,[rdx*4+rsi]
 	and	rsp,-64
-	mov	QWORD PTR[((64+0))+rsp],rdi
-	mov	QWORD PTR[((64+8))+rsp],rsi
-	mov	QWORD PTR[((64+16))+rsp],rdx
-	mov	QWORD PTR[((64+24))+rsp],r11
-	movaps	XMMWORD PTR[(64+32)+rsp],xmm6
-	movaps	XMMWORD PTR[(64+48)+rsp],xmm7
-	movaps	XMMWORD PTR[(64+64)+rsp],xmm8
-	movaps	XMMWORD PTR[(64+80)+rsp],xmm9
-$L$prologue_ssse3::
+	mov	QWORD[((64+0))+rsp],rdi
+	mov	QWORD[((64+8))+rsp],rsi
+	mov	QWORD[((64+16))+rsp],rdx
+	mov	QWORD[((64+24))+rsp],r11
+	movaps	XMMWORD[(64+32)+rsp],xmm6
+	movaps	XMMWORD[(64+48)+rsp],xmm7
+	movaps	XMMWORD[(64+64)+rsp],xmm8
+	movaps	XMMWORD[(64+80)+rsp],xmm9
+$L$prologue_ssse3:
 
-	mov	eax,DWORD PTR[rdi]
-	mov	ebx,DWORD PTR[4+rdi]
-	mov	ecx,DWORD PTR[8+rdi]
-	mov	edx,DWORD PTR[12+rdi]
-	mov	r8d,DWORD PTR[16+rdi]
-	mov	r9d,DWORD PTR[20+rdi]
-	mov	r10d,DWORD PTR[24+rdi]
-	mov	r11d,DWORD PTR[28+rdi]
+	mov	eax,DWORD[rdi]
+	mov	ebx,DWORD[4+rdi]
+	mov	ecx,DWORD[8+rdi]
+	mov	edx,DWORD[12+rdi]
+	mov	r8d,DWORD[16+rdi]
+	mov	r9d,DWORD[20+rdi]
+	mov	r10d,DWORD[24+rdi]
+	mov	r11d,DWORD[28+rdi]
 
 
-	jmp	$L$loop_ssse3
+	jmp	NEAR $L$loop_ssse3
 ALIGN	16
-$L$loop_ssse3::
-	movdqa	xmm7,XMMWORD PTR[((K256+512))]
-	movdqu	xmm0,XMMWORD PTR[rsi]
-	movdqu	xmm1,XMMWORD PTR[16+rsi]
-	movdqu	xmm2,XMMWORD PTR[32+rsi]
+$L$loop_ssse3:
+	movdqa	xmm7,XMMWORD[((K256+512))]
+	movdqu	xmm0,XMMWORD[rsi]
+	movdqu	xmm1,XMMWORD[16+rsi]
+	movdqu	xmm2,XMMWORD[32+rsi]
 DB	102,15,56,0,199
-	movdqu	xmm3,XMMWORD PTR[48+rsi]
-	lea	rbp,QWORD PTR[K256]
+	movdqu	xmm3,XMMWORD[48+rsi]
+	lea	rbp,[K256]
 DB	102,15,56,0,207
-	movdqa	xmm4,XMMWORD PTR[rbp]
-	movdqa	xmm5,XMMWORD PTR[32+rbp]
+	movdqa	xmm4,XMMWORD[rbp]
+	movdqa	xmm5,XMMWORD[32+rbp]
 DB	102,15,56,0,215
 	paddd	xmm4,xmm0
-	movdqa	xmm6,XMMWORD PTR[64+rbp]
+	movdqa	xmm6,XMMWORD[64+rbp]
 DB	102,15,56,0,223
-	movdqa	xmm7,XMMWORD PTR[96+rbp]
+	movdqa	xmm7,XMMWORD[96+rbp]
 	paddd	xmm5,xmm1
 	paddd	xmm6,xmm2
 	paddd	xmm7,xmm3
-	movdqa	XMMWORD PTR[rsp],xmm4
+	movdqa	XMMWORD[rsp],xmm4
 	mov	r14d,eax
-	movdqa	XMMWORD PTR[16+rsp],xmm5
+	movdqa	XMMWORD[16+rsp],xmm5
 	mov	edi,ebx
-	movdqa	XMMWORD PTR[32+rsp],xmm6
+	movdqa	XMMWORD[32+rsp],xmm6
 	xor	edi,ecx
-	movdqa	XMMWORD PTR[48+rsp],xmm7
+	movdqa	XMMWORD[48+rsp],xmm7
 	mov	r13d,r8d
-	jmp	$L$ssse3_00_47
+	jmp	NEAR $L$ssse3_00_47
 
 ALIGN	16
-$L$ssse3_00_47::
+$L$ssse3_00_47:
 	sub	rbp,-128
 	ror	r13d,14
 	movdqa	xmm4,xmm1
@@ -1852,7 +1855,7 @@
 	and	r12d,r8d
 	xor	r13d,r8d
 DB	102,15,58,15,250,4
-	add	r11d,DWORD PTR[rsp]
+	add	r11d,DWORD[rsp]
 	mov	r15d,eax
 	xor	r12d,r10d
 	ror	r14d,11
@@ -1889,7 +1892,7 @@
 	and	r12d,edx
 	xor	r13d,edx
 	pslld	xmm5,11
-	add	r10d,DWORD PTR[4+rsp]
+	add	r10d,DWORD[4+rsp]
 	mov	edi,r11d
 	pxor	xmm4,xmm6
 	xor	r12d,r9d
@@ -1925,7 +1928,7 @@
 	and	r12d,ecx
 	pshufd	xmm7,xmm7,128
 	xor	r13d,ecx
-	add	r9d,DWORD PTR[8+rsp]
+	add	r9d,DWORD[8+rsp]
 	mov	r15d,r10d
 	psrldq	xmm7,8
 	xor	r12d,r8d
@@ -1959,7 +1962,7 @@
 	psrlq	xmm6,2
 	and	r12d,ebx
 	xor	r13d,ebx
-	add	r8d,DWORD PTR[12+rsp]
+	add	r8d,DWORD[12+rsp]
 	pxor	xmm7,xmm6
 	mov	edi,r9d
 	xor	r12d,edx
@@ -1967,7 +1970,7 @@
 	pshufd	xmm7,xmm7,8
 	xor	edi,r10d
 	add	r8d,r12d
-	movdqa	xmm6,XMMWORD PTR[rbp]
+	movdqa	xmm6,XMMWORD[rbp]
 	ror	r13d,6
 	and	r15d,edi
 	pslldq	xmm7,8
@@ -1981,7 +1984,7 @@
 	paddd	xmm6,xmm0
 	mov	r13d,eax
 	add	r14d,r8d
-	movdqa	XMMWORD PTR[rsp],xmm6
+	movdqa	XMMWORD[rsp],xmm6
 	ror	r13d,14
 	movdqa	xmm4,xmm2
 	mov	r8d,r14d
@@ -1996,7 +1999,7 @@
 	and	r12d,eax
 	xor	r13d,eax
 DB	102,15,58,15,251,4
-	add	edx,DWORD PTR[16+rsp]
+	add	edx,DWORD[16+rsp]
 	mov	r15d,r8d
 	xor	r12d,ecx
 	ror	r14d,11
@@ -2033,7 +2036,7 @@
 	and	r12d,r11d
 	xor	r13d,r11d
 	pslld	xmm5,11
-	add	ecx,DWORD PTR[20+rsp]
+	add	ecx,DWORD[20+rsp]
 	mov	edi,edx
 	pxor	xmm4,xmm6
 	xor	r12d,ebx
@@ -2069,7 +2072,7 @@
 	and	r12d,r10d
 	pshufd	xmm7,xmm7,128
 	xor	r13d,r10d
-	add	ebx,DWORD PTR[24+rsp]
+	add	ebx,DWORD[24+rsp]
 	mov	r15d,ecx
 	psrldq	xmm7,8
 	xor	r12d,eax
@@ -2103,7 +2106,7 @@
 	psrlq	xmm6,2
 	and	r12d,r9d
 	xor	r13d,r9d
-	add	eax,DWORD PTR[28+rsp]
+	add	eax,DWORD[28+rsp]
 	pxor	xmm7,xmm6
 	mov	edi,ebx
 	xor	r12d,r11d
@@ -2111,7 +2114,7 @@
 	pshufd	xmm7,xmm7,8
 	xor	edi,ecx
 	add	eax,r12d
-	movdqa	xmm6,XMMWORD PTR[32+rbp]
+	movdqa	xmm6,XMMWORD[32+rbp]
 	ror	r13d,6
 	and	r15d,edi
 	pslldq	xmm7,8
@@ -2125,7 +2128,7 @@
 	paddd	xmm6,xmm1
 	mov	r13d,r8d
 	add	r14d,eax
-	movdqa	XMMWORD PTR[16+rsp],xmm6
+	movdqa	XMMWORD[16+rsp],xmm6
 	ror	r13d,14
 	movdqa	xmm4,xmm3
 	mov	eax,r14d
@@ -2140,7 +2143,7 @@
 	and	r12d,r8d
 	xor	r13d,r8d
 DB	102,15,58,15,248,4
-	add	r11d,DWORD PTR[32+rsp]
+	add	r11d,DWORD[32+rsp]
 	mov	r15d,eax
 	xor	r12d,r10d
 	ror	r14d,11
@@ -2177,7 +2180,7 @@
 	and	r12d,edx
 	xor	r13d,edx
 	pslld	xmm5,11
-	add	r10d,DWORD PTR[36+rsp]
+	add	r10d,DWORD[36+rsp]
 	mov	edi,r11d
 	pxor	xmm4,xmm6
 	xor	r12d,r9d
@@ -2213,7 +2216,7 @@
 	and	r12d,ecx
 	pshufd	xmm7,xmm7,128
 	xor	r13d,ecx
-	add	r9d,DWORD PTR[40+rsp]
+	add	r9d,DWORD[40+rsp]
 	mov	r15d,r10d
 	psrldq	xmm7,8
 	xor	r12d,r8d
@@ -2247,7 +2250,7 @@
 	psrlq	xmm6,2
 	and	r12d,ebx
 	xor	r13d,ebx
-	add	r8d,DWORD PTR[44+rsp]
+	add	r8d,DWORD[44+rsp]
 	pxor	xmm7,xmm6
 	mov	edi,r9d
 	xor	r12d,edx
@@ -2255,7 +2258,7 @@
 	pshufd	xmm7,xmm7,8
 	xor	edi,r10d
 	add	r8d,r12d
-	movdqa	xmm6,XMMWORD PTR[64+rbp]
+	movdqa	xmm6,XMMWORD[64+rbp]
 	ror	r13d,6
 	and	r15d,edi
 	pslldq	xmm7,8
@@ -2269,7 +2272,7 @@
 	paddd	xmm6,xmm2
 	mov	r13d,eax
 	add	r14d,r8d
-	movdqa	XMMWORD PTR[32+rsp],xmm6
+	movdqa	XMMWORD[32+rsp],xmm6
 	ror	r13d,14
 	movdqa	xmm4,xmm0
 	mov	r8d,r14d
@@ -2284,7 +2287,7 @@
 	and	r12d,eax
 	xor	r13d,eax
 DB	102,15,58,15,249,4
-	add	edx,DWORD PTR[48+rsp]
+	add	edx,DWORD[48+rsp]
 	mov	r15d,r8d
 	xor	r12d,ecx
 	ror	r14d,11
@@ -2321,7 +2324,7 @@
 	and	r12d,r11d
 	xor	r13d,r11d
 	pslld	xmm5,11
-	add	ecx,DWORD PTR[52+rsp]
+	add	ecx,DWORD[52+rsp]
 	mov	edi,edx
 	pxor	xmm4,xmm6
 	xor	r12d,ebx
@@ -2357,7 +2360,7 @@
 	and	r12d,r10d
 	pshufd	xmm7,xmm7,128
 	xor	r13d,r10d
-	add	ebx,DWORD PTR[56+rsp]
+	add	ebx,DWORD[56+rsp]
 	mov	r15d,ecx
 	psrldq	xmm7,8
 	xor	r12d,eax
@@ -2391,7 +2394,7 @@
 	psrlq	xmm6,2
 	and	r12d,r9d
 	xor	r13d,r9d
-	add	eax,DWORD PTR[60+rsp]
+	add	eax,DWORD[60+rsp]
 	pxor	xmm7,xmm6
 	mov	edi,ebx
 	xor	r12d,r11d
@@ -2399,7 +2402,7 @@
 	pshufd	xmm7,xmm7,8
 	xor	edi,ecx
 	add	eax,r12d
-	movdqa	xmm6,XMMWORD PTR[96+rbp]
+	movdqa	xmm6,XMMWORD[96+rbp]
 	ror	r13d,6
 	and	r15d,edi
 	pslldq	xmm7,8
@@ -2413,9 +2416,9 @@
 	paddd	xmm6,xmm3
 	mov	r13d,r8d
 	add	r14d,eax
-	movdqa	XMMWORD PTR[48+rsp],xmm6
-	cmp	BYTE PTR[131+rbp],0
-	jne	$L$ssse3_00_47
+	movdqa	XMMWORD[48+rsp],xmm6
+	cmp	BYTE[131+rbp],0
+	jne	NEAR $L$ssse3_00_47
 	ror	r13d,14
 	mov	eax,r14d
 	mov	r12d,r9d
@@ -2426,7 +2429,7 @@
 	xor	r14d,eax
 	and	r12d,r8d
 	xor	r13d,r8d
-	add	r11d,DWORD PTR[rsp]
+	add	r11d,DWORD[rsp]
 	mov	r15d,eax
 	xor	r12d,r10d
 	ror	r14d,11
@@ -2452,7 +2455,7 @@
 	xor	r14d,r11d
 	and	r12d,edx
 	xor	r13d,edx
-	add	r10d,DWORD PTR[4+rsp]
+	add	r10d,DWORD[4+rsp]
 	mov	edi,r11d
 	xor	r12d,r9d
 	ror	r14d,11
@@ -2478,7 +2481,7 @@
 	xor	r14d,r10d
 	and	r12d,ecx
 	xor	r13d,ecx
-	add	r9d,DWORD PTR[8+rsp]
+	add	r9d,DWORD[8+rsp]
 	mov	r15d,r10d
 	xor	r12d,r8d
 	ror	r14d,11
@@ -2504,7 +2507,7 @@
 	xor	r14d,r9d
 	and	r12d,ebx
 	xor	r13d,ebx
-	add	r8d,DWORD PTR[12+rsp]
+	add	r8d,DWORD[12+rsp]
 	mov	edi,r9d
 	xor	r12d,edx
 	ror	r14d,11
@@ -2530,7 +2533,7 @@
 	xor	r14d,r8d
 	and	r12d,eax
 	xor	r13d,eax
-	add	edx,DWORD PTR[16+rsp]
+	add	edx,DWORD[16+rsp]
 	mov	r15d,r8d
 	xor	r12d,ecx
 	ror	r14d,11
@@ -2556,7 +2559,7 @@
 	xor	r14d,edx
 	and	r12d,r11d
 	xor	r13d,r11d
-	add	ecx,DWORD PTR[20+rsp]
+	add	ecx,DWORD[20+rsp]
 	mov	edi,edx
 	xor	r12d,ebx
 	ror	r14d,11
@@ -2582,7 +2585,7 @@
 	xor	r14d,ecx
 	and	r12d,r10d
 	xor	r13d,r10d
-	add	ebx,DWORD PTR[24+rsp]
+	add	ebx,DWORD[24+rsp]
 	mov	r15d,ecx
 	xor	r12d,eax
 	ror	r14d,11
@@ -2608,7 +2611,7 @@
 	xor	r14d,ebx
 	and	r12d,r9d
 	xor	r13d,r9d
-	add	eax,DWORD PTR[28+rsp]
+	add	eax,DWORD[28+rsp]
 	mov	edi,ebx
 	xor	r12d,r11d
 	ror	r14d,11
@@ -2634,7 +2637,7 @@
 	xor	r14d,eax
 	and	r12d,r8d
 	xor	r13d,r8d
-	add	r11d,DWORD PTR[32+rsp]
+	add	r11d,DWORD[32+rsp]
 	mov	r15d,eax
 	xor	r12d,r10d
 	ror	r14d,11
@@ -2660,7 +2663,7 @@
 	xor	r14d,r11d
 	and	r12d,edx
 	xor	r13d,edx
-	add	r10d,DWORD PTR[36+rsp]
+	add	r10d,DWORD[36+rsp]
 	mov	edi,r11d
 	xor	r12d,r9d
 	ror	r14d,11
@@ -2686,7 +2689,7 @@
 	xor	r14d,r10d
 	and	r12d,ecx
 	xor	r13d,ecx
-	add	r9d,DWORD PTR[40+rsp]
+	add	r9d,DWORD[40+rsp]
 	mov	r15d,r10d
 	xor	r12d,r8d
 	ror	r14d,11
@@ -2712,7 +2715,7 @@
 	xor	r14d,r9d
 	and	r12d,ebx
 	xor	r13d,ebx
-	add	r8d,DWORD PTR[44+rsp]
+	add	r8d,DWORD[44+rsp]
 	mov	edi,r9d
 	xor	r12d,edx
 	ror	r14d,11
@@ -2738,7 +2741,7 @@
 	xor	r14d,r8d
 	and	r12d,eax
 	xor	r13d,eax
-	add	edx,DWORD PTR[48+rsp]
+	add	edx,DWORD[48+rsp]
 	mov	r15d,r8d
 	xor	r12d,ecx
 	ror	r14d,11
@@ -2764,7 +2767,7 @@
 	xor	r14d,edx
 	and	r12d,r11d
 	xor	r13d,r11d
-	add	ecx,DWORD PTR[52+rsp]
+	add	ecx,DWORD[52+rsp]
 	mov	edi,edx
 	xor	r12d,ebx
 	ror	r14d,11
@@ -2790,7 +2793,7 @@
 	xor	r14d,ecx
 	and	r12d,r10d
 	xor	r13d,r10d
-	add	ebx,DWORD PTR[56+rsp]
+	add	ebx,DWORD[56+rsp]
 	mov	r15d,ecx
 	xor	r12d,eax
 	ror	r14d,11
@@ -2816,7 +2819,7 @@
 	xor	r14d,ebx
 	and	r12d,r9d
 	xor	r13d,r9d
-	add	eax,DWORD PTR[60+rsp]
+	add	eax,DWORD[60+rsp]
 	mov	edi,ebx
 	xor	r12d,r11d
 	ror	r14d,11
@@ -2832,53 +2835,52 @@
 	add	eax,r15d
 	mov	r13d,r8d
 	add	r14d,eax
-	mov	rdi,QWORD PTR[((64+0))+rsp]
+	mov	rdi,QWORD[((64+0))+rsp]
 	mov	eax,r14d
 
-	add	eax,DWORD PTR[rdi]
-	lea	rsi,QWORD PTR[64+rsi]
-	add	ebx,DWORD PTR[4+rdi]
-	add	ecx,DWORD PTR[8+rdi]
-	add	edx,DWORD PTR[12+rdi]
-	add	r8d,DWORD PTR[16+rdi]
-	add	r9d,DWORD PTR[20+rdi]
-	add	r10d,DWORD PTR[24+rdi]
-	add	r11d,DWORD PTR[28+rdi]
+	add	eax,DWORD[rdi]
+	lea	rsi,[64+rsi]
+	add	ebx,DWORD[4+rdi]
+	add	ecx,DWORD[8+rdi]
+	add	edx,DWORD[12+rdi]
+	add	r8d,DWORD[16+rdi]
+	add	r9d,DWORD[20+rdi]
+	add	r10d,DWORD[24+rdi]
+	add	r11d,DWORD[28+rdi]
 
-	cmp	rsi,QWORD PTR[((64+16))+rsp]
+	cmp	rsi,QWORD[((64+16))+rsp]
 
-	mov	DWORD PTR[rdi],eax
-	mov	DWORD PTR[4+rdi],ebx
-	mov	DWORD PTR[8+rdi],ecx
-	mov	DWORD PTR[12+rdi],edx
-	mov	DWORD PTR[16+rdi],r8d
-	mov	DWORD PTR[20+rdi],r9d
-	mov	DWORD PTR[24+rdi],r10d
-	mov	DWORD PTR[28+rdi],r11d
-	jb	$L$loop_ssse3
+	mov	DWORD[rdi],eax
+	mov	DWORD[4+rdi],ebx
+	mov	DWORD[8+rdi],ecx
+	mov	DWORD[12+rdi],edx
+	mov	DWORD[16+rdi],r8d
+	mov	DWORD[20+rdi],r9d
+	mov	DWORD[24+rdi],r10d
+	mov	DWORD[28+rdi],r11d
+	jb	NEAR $L$loop_ssse3
 
-	mov	rsi,QWORD PTR[((64+24))+rsp]
-	movaps	xmm6,XMMWORD PTR[((64+32))+rsp]
-	movaps	xmm7,XMMWORD PTR[((64+48))+rsp]
-	movaps	xmm8,XMMWORD PTR[((64+64))+rsp]
-	movaps	xmm9,XMMWORD PTR[((64+80))+rsp]
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$epilogue_ssse3::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rsi,QWORD[((64+24))+rsp]
+	movaps	xmm6,XMMWORD[((64+32))+rsp]
+	movaps	xmm7,XMMWORD[((64+48))+rsp]
+	movaps	xmm8,XMMWORD[((64+64))+rsp]
+	movaps	xmm9,XMMWORD[((64+80))+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$epilogue_ssse3:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_sha256_block_data_order_ssse3::
-sha256_block_data_order_ssse3	ENDP
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+$L$SEH_end_sha256_block_data_order_ssse3:
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -2890,74 +2892,74 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 	mov	rsi,rax
-	mov	rax,QWORD PTR[((64+24))+rax]
-	lea	rax,QWORD PTR[48+rax]
+	mov	rax,QWORD[((64+24))+rax]
+	lea	rax,[48+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	lea	rsi,QWORD PTR[((64+32))+rsi]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[((64+32))+rsi]
+	lea	rdi,[512+r8]
 	mov	ecx,8
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -2971,27 +2973,22 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
-ALIGN	4
-	DD	imagerel $L$SEH_begin_sha256_block_data_order
-	DD	imagerel $L$SEH_end_sha256_block_data_order
-	DD	imagerel $L$SEH_info_sha256_block_data_order
-	DD	imagerel $L$SEH_begin_sha256_block_data_order_ssse3
-	DD	imagerel $L$SEH_end_sha256_block_data_order_ssse3
-	DD	imagerel $L$SEH_info_sha256_block_data_order_ssse3
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
-ALIGN	8
-$L$SEH_info_sha256_block_data_order::
-DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$prologue,imagerel $L$epilogue
-$L$SEH_info_sha256_block_data_order_ssse3::
-DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$prologue_ssse3,imagerel $L$epilogue_ssse3
 
-.xdata	ENDS
-END
+section	.pdata rdata align=4
+ALIGN	4
+	DD	$L$SEH_begin_sha256_block_data_order wrt ..imagebase
+	DD	$L$SEH_end_sha256_block_data_order wrt ..imagebase
+	DD	$L$SEH_info_sha256_block_data_order wrt ..imagebase
+	DD	$L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase
+	DD	$L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase
+	DD	$L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase
+section	.xdata rdata align=8
+ALIGN	8
+$L$SEH_info_sha256_block_data_order:
+DB	9,0,0,0
+	DD	se_handler wrt ..imagebase
+	DD	$L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase
+$L$SEH_info_sha256_block_data_order_ssse3:
+DB	9,0,0,0
+	DD	se_handler wrt ..imagebase
+	DD	$L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm
index e993c3c..b76cc0e 100644
--- a/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm
@@ -1,15 +1,19 @@
-OPTION	DOTNAME
-.text$	SEGMENT ALIGN(256) 'CODE'
+default	rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section	.text code align=64
 
-EXTERN	OPENSSL_ia32cap_P:NEAR
-PUBLIC	sha512_block_data_order
+
+EXTERN	OPENSSL_ia32cap_P
+global	sha512_block_data_order
 
 ALIGN	16
-sha512_block_data_order	PROC PUBLIC
-	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
-	mov	QWORD PTR[16+rsp],rsi
+sha512_block_data_order:
+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
+	mov	QWORD[16+rsp],rsi
 	mov	rax,rsp
-$L$SEH_begin_sha512_block_data_order::
+$L$SEH_begin_sha512_block_data_order:
 	mov	rdi,rcx
 	mov	rsi,rdx
 	mov	rdx,r8
@@ -24,30 +28,30 @@
 	mov	r11,rsp
 	shl	rdx,4
 	sub	rsp,16*8+4*8
-	lea	rdx,QWORD PTR[rdx*8+rsi]
+	lea	rdx,[rdx*8+rsi]
 	and	rsp,-64
-	mov	QWORD PTR[((128+0))+rsp],rdi
-	mov	QWORD PTR[((128+8))+rsp],rsi
-	mov	QWORD PTR[((128+16))+rsp],rdx
-	mov	QWORD PTR[((128+24))+rsp],r11
-$L$prologue::
+	mov	QWORD[((128+0))+rsp],rdi
+	mov	QWORD[((128+8))+rsp],rsi
+	mov	QWORD[((128+16))+rsp],rdx
+	mov	QWORD[((128+24))+rsp],r11
+$L$prologue:
 
-	mov	rax,QWORD PTR[rdi]
-	mov	rbx,QWORD PTR[8+rdi]
-	mov	rcx,QWORD PTR[16+rdi]
-	mov	rdx,QWORD PTR[24+rdi]
-	mov	r8,QWORD PTR[32+rdi]
-	mov	r9,QWORD PTR[40+rdi]
-	mov	r10,QWORD PTR[48+rdi]
-	mov	r11,QWORD PTR[56+rdi]
-	jmp	$L$loop
+	mov	rax,QWORD[rdi]
+	mov	rbx,QWORD[8+rdi]
+	mov	rcx,QWORD[16+rdi]
+	mov	rdx,QWORD[24+rdi]
+	mov	r8,QWORD[32+rdi]
+	mov	r9,QWORD[40+rdi]
+	mov	r10,QWORD[48+rdi]
+	mov	r11,QWORD[56+rdi]
+	jmp	NEAR $L$loop
 
 ALIGN	16
-$L$loop::
+$L$loop:
 	mov	rdi,rbx
-	lea	rbp,QWORD PTR[K512]
+	lea	rbp,[K512]
 	xor	rdi,rcx
-	mov	r12,QWORD PTR[rsi]
+	mov	r12,QWORD[rsi]
 	mov	r13,r8
 	mov	r14,rax
 	bswap	r12
@@ -58,7 +62,7 @@
 	ror	r14,5
 	xor	r15,r10
 
-	mov	QWORD PTR[rsp],r12
+	mov	QWORD[rsp],r12
 	xor	r14,rax
 	and	r15,r8
 
@@ -71,7 +75,7 @@
 	add	r12,r15
 
 	mov	r15,rax
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rax
 
 	xor	r15,rbx
@@ -86,9 +90,9 @@
 	add	rdx,r12
 	add	r11,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	r11,r14
-	mov	r12,QWORD PTR[8+rsi]
+	mov	r12,QWORD[8+rsi]
 	mov	r13,rdx
 	mov	r14,r11
 	bswap	r12
@@ -99,7 +103,7 @@
 	ror	r14,5
 	xor	rdi,r9
 
-	mov	QWORD PTR[8+rsp],r12
+	mov	QWORD[8+rsp],r12
 	xor	r14,r11
 	and	rdi,rdx
 
@@ -112,7 +116,7 @@
 	add	r12,rdi
 
 	mov	rdi,r11
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r11
 
 	xor	rdi,rax
@@ -127,9 +131,9 @@
 	add	rcx,r12
 	add	r10,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	r10,r14
-	mov	r12,QWORD PTR[16+rsi]
+	mov	r12,QWORD[16+rsi]
 	mov	r13,rcx
 	mov	r14,r10
 	bswap	r12
@@ -140,7 +144,7 @@
 	ror	r14,5
 	xor	r15,r8
 
-	mov	QWORD PTR[16+rsp],r12
+	mov	QWORD[16+rsp],r12
 	xor	r14,r10
 	and	r15,rcx
 
@@ -153,7 +157,7 @@
 	add	r12,r15
 
 	mov	r15,r10
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r10
 
 	xor	r15,r11
@@ -168,9 +172,9 @@
 	add	rbx,r12
 	add	r9,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	r9,r14
-	mov	r12,QWORD PTR[24+rsi]
+	mov	r12,QWORD[24+rsi]
 	mov	r13,rbx
 	mov	r14,r9
 	bswap	r12
@@ -181,7 +185,7 @@
 	ror	r14,5
 	xor	rdi,rdx
 
-	mov	QWORD PTR[24+rsp],r12
+	mov	QWORD[24+rsp],r12
 	xor	r14,r9
 	and	rdi,rbx
 
@@ -194,7 +198,7 @@
 	add	r12,rdi
 
 	mov	rdi,r9
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r9
 
 	xor	rdi,r10
@@ -209,9 +213,9 @@
 	add	rax,r12
 	add	r8,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	r8,r14
-	mov	r12,QWORD PTR[32+rsi]
+	mov	r12,QWORD[32+rsi]
 	mov	r13,rax
 	mov	r14,r8
 	bswap	r12
@@ -222,7 +226,7 @@
 	ror	r14,5
 	xor	r15,rcx
 
-	mov	QWORD PTR[32+rsp],r12
+	mov	QWORD[32+rsp],r12
 	xor	r14,r8
 	and	r15,rax
 
@@ -235,7 +239,7 @@
 	add	r12,r15
 
 	mov	r15,r8
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r8
 
 	xor	r15,r9
@@ -250,9 +254,9 @@
 	add	r11,r12
 	add	rdx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	rdx,r14
-	mov	r12,QWORD PTR[40+rsi]
+	mov	r12,QWORD[40+rsi]
 	mov	r13,r11
 	mov	r14,rdx
 	bswap	r12
@@ -263,7 +267,7 @@
 	ror	r14,5
 	xor	rdi,rbx
 
-	mov	QWORD PTR[40+rsp],r12
+	mov	QWORD[40+rsp],r12
 	xor	r14,rdx
 	and	rdi,r11
 
@@ -276,7 +280,7 @@
 	add	r12,rdi
 
 	mov	rdi,rdx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rdx
 
 	xor	rdi,r8
@@ -291,9 +295,9 @@
 	add	r10,r12
 	add	rcx,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	rcx,r14
-	mov	r12,QWORD PTR[48+rsi]
+	mov	r12,QWORD[48+rsi]
 	mov	r13,r10
 	mov	r14,rcx
 	bswap	r12
@@ -304,7 +308,7 @@
 	ror	r14,5
 	xor	r15,rax
 
-	mov	QWORD PTR[48+rsp],r12
+	mov	QWORD[48+rsp],r12
 	xor	r14,rcx
 	and	r15,r10
 
@@ -317,7 +321,7 @@
 	add	r12,r15
 
 	mov	r15,rcx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rcx
 
 	xor	r15,rdx
@@ -332,9 +336,9 @@
 	add	r9,r12
 	add	rbx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	rbx,r14
-	mov	r12,QWORD PTR[56+rsi]
+	mov	r12,QWORD[56+rsi]
 	mov	r13,r9
 	mov	r14,rbx
 	bswap	r12
@@ -345,7 +349,7 @@
 	ror	r14,5
 	xor	rdi,r11
 
-	mov	QWORD PTR[56+rsp],r12
+	mov	QWORD[56+rsp],r12
 	xor	r14,rbx
 	and	rdi,r9
 
@@ -358,7 +362,7 @@
 	add	r12,rdi
 
 	mov	rdi,rbx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rbx
 
 	xor	rdi,rcx
@@ -373,9 +377,9 @@
 	add	r8,r12
 	add	rax,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	rax,r14
-	mov	r12,QWORD PTR[64+rsi]
+	mov	r12,QWORD[64+rsi]
 	mov	r13,r8
 	mov	r14,rax
 	bswap	r12
@@ -386,7 +390,7 @@
 	ror	r14,5
 	xor	r15,r10
 
-	mov	QWORD PTR[64+rsp],r12
+	mov	QWORD[64+rsp],r12
 	xor	r14,rax
 	and	r15,r8
 
@@ -399,7 +403,7 @@
 	add	r12,r15
 
 	mov	r15,rax
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rax
 
 	xor	r15,rbx
@@ -414,9 +418,9 @@
 	add	rdx,r12
 	add	r11,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	r11,r14
-	mov	r12,QWORD PTR[72+rsi]
+	mov	r12,QWORD[72+rsi]
 	mov	r13,rdx
 	mov	r14,r11
 	bswap	r12
@@ -427,7 +431,7 @@
 	ror	r14,5
 	xor	rdi,r9
 
-	mov	QWORD PTR[72+rsp],r12
+	mov	QWORD[72+rsp],r12
 	xor	r14,r11
 	and	rdi,rdx
 
@@ -440,7 +444,7 @@
 	add	r12,rdi
 
 	mov	rdi,r11
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r11
 
 	xor	rdi,rax
@@ -455,9 +459,9 @@
 	add	rcx,r12
 	add	r10,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	r10,r14
-	mov	r12,QWORD PTR[80+rsi]
+	mov	r12,QWORD[80+rsi]
 	mov	r13,rcx
 	mov	r14,r10
 	bswap	r12
@@ -468,7 +472,7 @@
 	ror	r14,5
 	xor	r15,r8
 
-	mov	QWORD PTR[80+rsp],r12
+	mov	QWORD[80+rsp],r12
 	xor	r14,r10
 	and	r15,rcx
 
@@ -481,7 +485,7 @@
 	add	r12,r15
 
 	mov	r15,r10
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r10
 
 	xor	r15,r11
@@ -496,9 +500,9 @@
 	add	rbx,r12
 	add	r9,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	r9,r14
-	mov	r12,QWORD PTR[88+rsi]
+	mov	r12,QWORD[88+rsi]
 	mov	r13,rbx
 	mov	r14,r9
 	bswap	r12
@@ -509,7 +513,7 @@
 	ror	r14,5
 	xor	rdi,rdx
 
-	mov	QWORD PTR[88+rsp],r12
+	mov	QWORD[88+rsp],r12
 	xor	r14,r9
 	and	rdi,rbx
 
@@ -522,7 +526,7 @@
 	add	r12,rdi
 
 	mov	rdi,r9
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r9
 
 	xor	rdi,r10
@@ -537,9 +541,9 @@
 	add	rax,r12
 	add	r8,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	r8,r14
-	mov	r12,QWORD PTR[96+rsi]
+	mov	r12,QWORD[96+rsi]
 	mov	r13,rax
 	mov	r14,r8
 	bswap	r12
@@ -550,7 +554,7 @@
 	ror	r14,5
 	xor	r15,rcx
 
-	mov	QWORD PTR[96+rsp],r12
+	mov	QWORD[96+rsp],r12
 	xor	r14,r8
 	and	r15,rax
 
@@ -563,7 +567,7 @@
 	add	r12,r15
 
 	mov	r15,r8
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r8
 
 	xor	r15,r9
@@ -578,9 +582,9 @@
 	add	r11,r12
 	add	rdx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	rdx,r14
-	mov	r12,QWORD PTR[104+rsi]
+	mov	r12,QWORD[104+rsi]
 	mov	r13,r11
 	mov	r14,rdx
 	bswap	r12
@@ -591,7 +595,7 @@
 	ror	r14,5
 	xor	rdi,rbx
 
-	mov	QWORD PTR[104+rsp],r12
+	mov	QWORD[104+rsp],r12
 	xor	r14,rdx
 	and	rdi,r11
 
@@ -604,7 +608,7 @@
 	add	r12,rdi
 
 	mov	rdi,rdx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rdx
 
 	xor	rdi,r8
@@ -619,9 +623,9 @@
 	add	r10,r12
 	add	rcx,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
+	lea	rbp,[24+rbp]
 	add	rcx,r14
-	mov	r12,QWORD PTR[112+rsi]
+	mov	r12,QWORD[112+rsi]
 	mov	r13,r10
 	mov	r14,rcx
 	bswap	r12
@@ -632,7 +636,7 @@
 	ror	r14,5
 	xor	r15,rax
 
-	mov	QWORD PTR[112+rsp],r12
+	mov	QWORD[112+rsp],r12
 	xor	r14,rcx
 	and	r15,r10
 
@@ -645,7 +649,7 @@
 	add	r12,r15
 
 	mov	r15,rcx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rcx
 
 	xor	r15,rdx
@@ -660,9 +664,9 @@
 	add	r9,r12
 	add	rbx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
+	lea	rbp,[8+rbp]
 	add	rbx,r14
-	mov	r12,QWORD PTR[120+rsi]
+	mov	r12,QWORD[120+rsi]
 	mov	r13,r9
 	mov	r14,rbx
 	bswap	r12
@@ -673,7 +677,7 @@
 	ror	r14,5
 	xor	rdi,r11
 
-	mov	QWORD PTR[120+rsp],r12
+	mov	QWORD[120+rsp],r12
 	xor	r14,rbx
 	and	rdi,r9
 
@@ -686,7 +690,7 @@
 	add	r12,rdi
 
 	mov	rdi,rbx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rbx
 
 	xor	rdi,rcx
@@ -701,12 +705,12 @@
 	add	r8,r12
 	add	rax,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	jmp	$L$rounds_16_xx
+	lea	rbp,[24+rbp]
+	jmp	NEAR $L$rounds_16_xx
 ALIGN	16
-$L$rounds_16_xx::
-	mov	r13,QWORD PTR[8+rsp]
-	mov	r15,QWORD PTR[112+rsp]
+$L$rounds_16_xx:
+	mov	r13,QWORD[8+rsp]
+	mov	r15,QWORD[112+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -723,9 +727,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[72+rsp]
+	add	r12,QWORD[72+rsp]
 
-	add	r12,QWORD PTR[rsp]
+	add	r12,QWORD[rsp]
 	mov	r13,r8
 	add	r12,r15
 	mov	r14,rax
@@ -736,7 +740,7 @@
 	ror	r14,5
 	xor	r15,r10
 
-	mov	QWORD PTR[rsp],r12
+	mov	QWORD[rsp],r12
 	xor	r14,rax
 	and	r15,r8
 
@@ -749,7 +753,7 @@
 	add	r12,r15
 
 	mov	r15,rax
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rax
 
 	xor	r15,rbx
@@ -764,9 +768,9 @@
 	add	rdx,r12
 	add	r11,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[16+rsp]
-	mov	rdi,QWORD PTR[120+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[16+rsp]
+	mov	rdi,QWORD[120+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -783,9 +787,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[80+rsp]
+	add	r12,QWORD[80+rsp]
 
-	add	r12,QWORD PTR[8+rsp]
+	add	r12,QWORD[8+rsp]
 	mov	r13,rdx
 	add	r12,rdi
 	mov	r14,r11
@@ -796,7 +800,7 @@
 	ror	r14,5
 	xor	rdi,r9
 
-	mov	QWORD PTR[8+rsp],r12
+	mov	QWORD[8+rsp],r12
 	xor	r14,r11
 	and	rdi,rdx
 
@@ -809,7 +813,7 @@
 	add	r12,rdi
 
 	mov	rdi,r11
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r11
 
 	xor	rdi,rax
@@ -824,9 +828,9 @@
 	add	rcx,r12
 	add	r10,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[24+rsp]
-	mov	r15,QWORD PTR[rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[24+rsp]
+	mov	r15,QWORD[rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -843,9 +847,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[88+rsp]
+	add	r12,QWORD[88+rsp]
 
-	add	r12,QWORD PTR[16+rsp]
+	add	r12,QWORD[16+rsp]
 	mov	r13,rcx
 	add	r12,r15
 	mov	r14,r10
@@ -856,7 +860,7 @@
 	ror	r14,5
 	xor	r15,r8
 
-	mov	QWORD PTR[16+rsp],r12
+	mov	QWORD[16+rsp],r12
 	xor	r14,r10
 	and	r15,rcx
 
@@ -869,7 +873,7 @@
 	add	r12,r15
 
 	mov	r15,r10
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r10
 
 	xor	r15,r11
@@ -884,9 +888,9 @@
 	add	rbx,r12
 	add	r9,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[32+rsp]
-	mov	rdi,QWORD PTR[8+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[32+rsp]
+	mov	rdi,QWORD[8+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -903,9 +907,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[96+rsp]
+	add	r12,QWORD[96+rsp]
 
-	add	r12,QWORD PTR[24+rsp]
+	add	r12,QWORD[24+rsp]
 	mov	r13,rbx
 	add	r12,rdi
 	mov	r14,r9
@@ -916,7 +920,7 @@
 	ror	r14,5
 	xor	rdi,rdx
 
-	mov	QWORD PTR[24+rsp],r12
+	mov	QWORD[24+rsp],r12
 	xor	r14,r9
 	and	rdi,rbx
 
@@ -929,7 +933,7 @@
 	add	r12,rdi
 
 	mov	rdi,r9
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r9
 
 	xor	rdi,r10
@@ -944,9 +948,9 @@
 	add	rax,r12
 	add	r8,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[40+rsp]
-	mov	r15,QWORD PTR[16+rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[40+rsp]
+	mov	r15,QWORD[16+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -963,9 +967,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[104+rsp]
+	add	r12,QWORD[104+rsp]
 
-	add	r12,QWORD PTR[32+rsp]
+	add	r12,QWORD[32+rsp]
 	mov	r13,rax
 	add	r12,r15
 	mov	r14,r8
@@ -976,7 +980,7 @@
 	ror	r14,5
 	xor	r15,rcx
 
-	mov	QWORD PTR[32+rsp],r12
+	mov	QWORD[32+rsp],r12
 	xor	r14,r8
 	and	r15,rax
 
@@ -989,7 +993,7 @@
 	add	r12,r15
 
 	mov	r15,r8
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r8
 
 	xor	r15,r9
@@ -1004,9 +1008,9 @@
 	add	r11,r12
 	add	rdx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[48+rsp]
-	mov	rdi,QWORD PTR[24+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[48+rsp]
+	mov	rdi,QWORD[24+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1023,9 +1027,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[112+rsp]
+	add	r12,QWORD[112+rsp]
 
-	add	r12,QWORD PTR[40+rsp]
+	add	r12,QWORD[40+rsp]
 	mov	r13,r11
 	add	r12,rdi
 	mov	r14,rdx
@@ -1036,7 +1040,7 @@
 	ror	r14,5
 	xor	rdi,rbx
 
-	mov	QWORD PTR[40+rsp],r12
+	mov	QWORD[40+rsp],r12
 	xor	r14,rdx
 	and	rdi,r11
 
@@ -1049,7 +1053,7 @@
 	add	r12,rdi
 
 	mov	rdi,rdx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rdx
 
 	xor	rdi,r8
@@ -1064,9 +1068,9 @@
 	add	r10,r12
 	add	rcx,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[56+rsp]
-	mov	r15,QWORD PTR[32+rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[56+rsp]
+	mov	r15,QWORD[32+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1083,9 +1087,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[120+rsp]
+	add	r12,QWORD[120+rsp]
 
-	add	r12,QWORD PTR[48+rsp]
+	add	r12,QWORD[48+rsp]
 	mov	r13,r10
 	add	r12,r15
 	mov	r14,rcx
@@ -1096,7 +1100,7 @@
 	ror	r14,5
 	xor	r15,rax
 
-	mov	QWORD PTR[48+rsp],r12
+	mov	QWORD[48+rsp],r12
 	xor	r14,rcx
 	and	r15,r10
 
@@ -1109,7 +1113,7 @@
 	add	r12,r15
 
 	mov	r15,rcx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rcx
 
 	xor	r15,rdx
@@ -1124,9 +1128,9 @@
 	add	r9,r12
 	add	rbx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[64+rsp]
-	mov	rdi,QWORD PTR[40+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[64+rsp]
+	mov	rdi,QWORD[40+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1143,9 +1147,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[rsp]
+	add	r12,QWORD[rsp]
 
-	add	r12,QWORD PTR[56+rsp]
+	add	r12,QWORD[56+rsp]
 	mov	r13,r9
 	add	r12,rdi
 	mov	r14,rbx
@@ -1156,7 +1160,7 @@
 	ror	r14,5
 	xor	rdi,r11
 
-	mov	QWORD PTR[56+rsp],r12
+	mov	QWORD[56+rsp],r12
 	xor	r14,rbx
 	and	rdi,r9
 
@@ -1169,7 +1173,7 @@
 	add	r12,rdi
 
 	mov	rdi,rbx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rbx
 
 	xor	rdi,rcx
@@ -1184,9 +1188,9 @@
 	add	r8,r12
 	add	rax,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[72+rsp]
-	mov	r15,QWORD PTR[48+rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[72+rsp]
+	mov	r15,QWORD[48+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1203,9 +1207,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[8+rsp]
+	add	r12,QWORD[8+rsp]
 
-	add	r12,QWORD PTR[64+rsp]
+	add	r12,QWORD[64+rsp]
 	mov	r13,r8
 	add	r12,r15
 	mov	r14,rax
@@ -1216,7 +1220,7 @@
 	ror	r14,5
 	xor	r15,r10
 
-	mov	QWORD PTR[64+rsp],r12
+	mov	QWORD[64+rsp],r12
 	xor	r14,rax
 	and	r15,r8
 
@@ -1229,7 +1233,7 @@
 	add	r12,r15
 
 	mov	r15,rax
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rax
 
 	xor	r15,rbx
@@ -1244,9 +1248,9 @@
 	add	rdx,r12
 	add	r11,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[80+rsp]
-	mov	rdi,QWORD PTR[56+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[80+rsp]
+	mov	rdi,QWORD[56+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1263,9 +1267,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[16+rsp]
+	add	r12,QWORD[16+rsp]
 
-	add	r12,QWORD PTR[72+rsp]
+	add	r12,QWORD[72+rsp]
 	mov	r13,rdx
 	add	r12,rdi
 	mov	r14,r11
@@ -1276,7 +1280,7 @@
 	ror	r14,5
 	xor	rdi,r9
 
-	mov	QWORD PTR[72+rsp],r12
+	mov	QWORD[72+rsp],r12
 	xor	r14,r11
 	and	rdi,rdx
 
@@ -1289,7 +1293,7 @@
 	add	r12,rdi
 
 	mov	rdi,r11
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r11
 
 	xor	rdi,rax
@@ -1304,9 +1308,9 @@
 	add	rcx,r12
 	add	r10,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[88+rsp]
-	mov	r15,QWORD PTR[64+rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[88+rsp]
+	mov	r15,QWORD[64+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1323,9 +1327,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[24+rsp]
+	add	r12,QWORD[24+rsp]
 
-	add	r12,QWORD PTR[80+rsp]
+	add	r12,QWORD[80+rsp]
 	mov	r13,rcx
 	add	r12,r15
 	mov	r14,r10
@@ -1336,7 +1340,7 @@
 	ror	r14,5
 	xor	r15,r8
 
-	mov	QWORD PTR[80+rsp],r12
+	mov	QWORD[80+rsp],r12
 	xor	r14,r10
 	and	r15,rcx
 
@@ -1349,7 +1353,7 @@
 	add	r12,r15
 
 	mov	r15,r10
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r10
 
 	xor	r15,r11
@@ -1364,9 +1368,9 @@
 	add	rbx,r12
 	add	r9,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[96+rsp]
-	mov	rdi,QWORD PTR[72+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[96+rsp]
+	mov	rdi,QWORD[72+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1383,9 +1387,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[32+rsp]
+	add	r12,QWORD[32+rsp]
 
-	add	r12,QWORD PTR[88+rsp]
+	add	r12,QWORD[88+rsp]
 	mov	r13,rbx
 	add	r12,rdi
 	mov	r14,r9
@@ -1396,7 +1400,7 @@
 	ror	r14,5
 	xor	rdi,rdx
 
-	mov	QWORD PTR[88+rsp],r12
+	mov	QWORD[88+rsp],r12
 	xor	r14,r9
 	and	rdi,rbx
 
@@ -1409,7 +1413,7 @@
 	add	r12,rdi
 
 	mov	rdi,r9
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r9
 
 	xor	rdi,r10
@@ -1424,9 +1428,9 @@
 	add	rax,r12
 	add	r8,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[104+rsp]
-	mov	r15,QWORD PTR[80+rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[104+rsp]
+	mov	r15,QWORD[80+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1443,9 +1447,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[40+rsp]
+	add	r12,QWORD[40+rsp]
 
-	add	r12,QWORD PTR[96+rsp]
+	add	r12,QWORD[96+rsp]
 	mov	r13,rax
 	add	r12,r15
 	mov	r14,r8
@@ -1456,7 +1460,7 @@
 	ror	r14,5
 	xor	r15,rcx
 
-	mov	QWORD PTR[96+rsp],r12
+	mov	QWORD[96+rsp],r12
 	xor	r14,r8
 	and	r15,rax
 
@@ -1469,7 +1473,7 @@
 	add	r12,r15
 
 	mov	r15,r8
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,r8
 
 	xor	r15,r9
@@ -1484,9 +1488,9 @@
 	add	r11,r12
 	add	rdx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[112+rsp]
-	mov	rdi,QWORD PTR[88+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[112+rsp]
+	mov	rdi,QWORD[88+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1503,9 +1507,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[48+rsp]
+	add	r12,QWORD[48+rsp]
 
-	add	r12,QWORD PTR[104+rsp]
+	add	r12,QWORD[104+rsp]
 	mov	r13,r11
 	add	r12,rdi
 	mov	r14,rdx
@@ -1516,7 +1520,7 @@
 	ror	r14,5
 	xor	rdi,rbx
 
-	mov	QWORD PTR[104+rsp],r12
+	mov	QWORD[104+rsp],r12
 	xor	r14,rdx
 	and	rdi,r11
 
@@ -1529,7 +1533,7 @@
 	add	r12,rdi
 
 	mov	rdi,rdx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rdx
 
 	xor	rdi,r8
@@ -1544,9 +1548,9 @@
 	add	r10,r12
 	add	rcx,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	mov	r13,QWORD PTR[120+rsp]
-	mov	r15,QWORD PTR[96+rsp]
+	lea	rbp,[24+rbp]
+	mov	r13,QWORD[120+rsp]
+	mov	r15,QWORD[96+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1563,9 +1567,9 @@
 	ror	r15,19
 	xor	r12,r13
 	xor	r15,r14
-	add	r12,QWORD PTR[56+rsp]
+	add	r12,QWORD[56+rsp]
 
-	add	r12,QWORD PTR[112+rsp]
+	add	r12,QWORD[112+rsp]
 	mov	r13,r10
 	add	r12,r15
 	mov	r14,rcx
@@ -1576,7 +1580,7 @@
 	ror	r14,5
 	xor	r15,rax
 
-	mov	QWORD PTR[112+rsp],r12
+	mov	QWORD[112+rsp],r12
 	xor	r14,rcx
 	and	r15,r10
 
@@ -1589,7 +1593,7 @@
 	add	r12,r15
 
 	mov	r15,rcx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rcx
 
 	xor	r15,rdx
@@ -1604,9 +1608,9 @@
 	add	r9,r12
 	add	rbx,r12
 
-	lea	rbp,QWORD PTR[8+rbp]
-	mov	r13,QWORD PTR[rsp]
-	mov	rdi,QWORD PTR[104+rsp]
+	lea	rbp,[8+rbp]
+	mov	r13,QWORD[rsp]
+	mov	rdi,QWORD[104+rsp]
 
 	mov	r12,r13
 	ror	r13,7
@@ -1623,9 +1627,9 @@
 	ror	rdi,19
 	xor	r12,r13
 	xor	rdi,r14
-	add	r12,QWORD PTR[64+rsp]
+	add	r12,QWORD[64+rsp]
 
-	add	r12,QWORD PTR[120+rsp]
+	add	r12,QWORD[120+rsp]
 	mov	r13,r9
 	add	r12,rdi
 	mov	r14,rbx
@@ -1636,7 +1640,7 @@
 	ror	r14,5
 	xor	rdi,r11
 
-	mov	QWORD PTR[120+rsp],r12
+	mov	QWORD[120+rsp],r12
 	xor	r14,rbx
 	and	rdi,r9
 
@@ -1649,7 +1653,7 @@
 	add	r12,rdi
 
 	mov	rdi,rbx
-	add	r12,QWORD PTR[rbp]
+	add	r12,QWORD[rbp]
 	xor	r14,rbx
 
 	xor	rdi,rcx
@@ -1664,144 +1668,143 @@
 	add	r8,r12
 	add	rax,r12
 
-	lea	rbp,QWORD PTR[24+rbp]
-	cmp	BYTE PTR[7+rbp],0
-	jnz	$L$rounds_16_xx
+	lea	rbp,[24+rbp]
+	cmp	BYTE[7+rbp],0
+	jnz	NEAR $L$rounds_16_xx
 
-	mov	rdi,QWORD PTR[((128+0))+rsp]
+	mov	rdi,QWORD[((128+0))+rsp]
 	add	rax,r14
-	lea	rsi,QWORD PTR[128+rsi]
+	lea	rsi,[128+rsi]
 
-	add	rax,QWORD PTR[rdi]
-	add	rbx,QWORD PTR[8+rdi]
-	add	rcx,QWORD PTR[16+rdi]
-	add	rdx,QWORD PTR[24+rdi]
-	add	r8,QWORD PTR[32+rdi]
-	add	r9,QWORD PTR[40+rdi]
-	add	r10,QWORD PTR[48+rdi]
-	add	r11,QWORD PTR[56+rdi]
+	add	rax,QWORD[rdi]
+	add	rbx,QWORD[8+rdi]
+	add	rcx,QWORD[16+rdi]
+	add	rdx,QWORD[24+rdi]
+	add	r8,QWORD[32+rdi]
+	add	r9,QWORD[40+rdi]
+	add	r10,QWORD[48+rdi]
+	add	r11,QWORD[56+rdi]
 
-	cmp	rsi,QWORD PTR[((128+16))+rsp]
+	cmp	rsi,QWORD[((128+16))+rsp]
 
-	mov	QWORD PTR[rdi],rax
-	mov	QWORD PTR[8+rdi],rbx
-	mov	QWORD PTR[16+rdi],rcx
-	mov	QWORD PTR[24+rdi],rdx
-	mov	QWORD PTR[32+rdi],r8
-	mov	QWORD PTR[40+rdi],r9
-	mov	QWORD PTR[48+rdi],r10
-	mov	QWORD PTR[56+rdi],r11
-	jb	$L$loop
+	mov	QWORD[rdi],rax
+	mov	QWORD[8+rdi],rbx
+	mov	QWORD[16+rdi],rcx
+	mov	QWORD[24+rdi],rdx
+	mov	QWORD[32+rdi],r8
+	mov	QWORD[40+rdi],r9
+	mov	QWORD[48+rdi],r10
+	mov	QWORD[56+rdi],r11
+	jb	NEAR $L$loop
 
-	mov	rsi,QWORD PTR[((128+24))+rsp]
-	mov	r15,QWORD PTR[rsi]
-	mov	r14,QWORD PTR[8+rsi]
-	mov	r13,QWORD PTR[16+rsi]
-	mov	r12,QWORD PTR[24+rsi]
-	mov	rbp,QWORD PTR[32+rsi]
-	mov	rbx,QWORD PTR[40+rsi]
-	lea	rsp,QWORD PTR[48+rsi]
-$L$epilogue::
-	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
-	mov	rsi,QWORD PTR[16+rsp]
+	mov	rsi,QWORD[((128+24))+rsp]
+	mov	r15,QWORD[rsi]
+	mov	r14,QWORD[8+rsi]
+	mov	r13,QWORD[16+rsi]
+	mov	r12,QWORD[24+rsi]
+	mov	rbp,QWORD[32+rsi]
+	mov	rbx,QWORD[40+rsi]
+	lea	rsp,[48+rsi]
+$L$epilogue:
+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
+	mov	rsi,QWORD[16+rsp]
 	DB	0F3h,0C3h		;repret
-$L$SEH_end_sha512_block_data_order::
-sha512_block_data_order	ENDP
+$L$SEH_end_sha512_block_data_order:
 ALIGN	64
 
-K512::
-	DQ	0428a2f98d728ae22h,07137449123ef65cdh
-	DQ	0428a2f98d728ae22h,07137449123ef65cdh
-	DQ	0b5c0fbcfec4d3b2fh,0e9b5dba58189dbbch
-	DQ	0b5c0fbcfec4d3b2fh,0e9b5dba58189dbbch
-	DQ	03956c25bf348b538h,059f111f1b605d019h
-	DQ	03956c25bf348b538h,059f111f1b605d019h
-	DQ	0923f82a4af194f9bh,0ab1c5ed5da6d8118h
-	DQ	0923f82a4af194f9bh,0ab1c5ed5da6d8118h
-	DQ	0d807aa98a3030242h,012835b0145706fbeh
-	DQ	0d807aa98a3030242h,012835b0145706fbeh
-	DQ	0243185be4ee4b28ch,0550c7dc3d5ffb4e2h
-	DQ	0243185be4ee4b28ch,0550c7dc3d5ffb4e2h
-	DQ	072be5d74f27b896fh,080deb1fe3b1696b1h
-	DQ	072be5d74f27b896fh,080deb1fe3b1696b1h
-	DQ	09bdc06a725c71235h,0c19bf174cf692694h
-	DQ	09bdc06a725c71235h,0c19bf174cf692694h
-	DQ	0e49b69c19ef14ad2h,0efbe4786384f25e3h
-	DQ	0e49b69c19ef14ad2h,0efbe4786384f25e3h
-	DQ	00fc19dc68b8cd5b5h,0240ca1cc77ac9c65h
-	DQ	00fc19dc68b8cd5b5h,0240ca1cc77ac9c65h
-	DQ	02de92c6f592b0275h,04a7484aa6ea6e483h
-	DQ	02de92c6f592b0275h,04a7484aa6ea6e483h
-	DQ	05cb0a9dcbd41fbd4h,076f988da831153b5h
-	DQ	05cb0a9dcbd41fbd4h,076f988da831153b5h
-	DQ	0983e5152ee66dfabh,0a831c66d2db43210h
-	DQ	0983e5152ee66dfabh,0a831c66d2db43210h
-	DQ	0b00327c898fb213fh,0bf597fc7beef0ee4h
-	DQ	0b00327c898fb213fh,0bf597fc7beef0ee4h
-	DQ	0c6e00bf33da88fc2h,0d5a79147930aa725h
-	DQ	0c6e00bf33da88fc2h,0d5a79147930aa725h
-	DQ	006ca6351e003826fh,0142929670a0e6e70h
-	DQ	006ca6351e003826fh,0142929670a0e6e70h
-	DQ	027b70a8546d22ffch,02e1b21385c26c926h
-	DQ	027b70a8546d22ffch,02e1b21385c26c926h
-	DQ	04d2c6dfc5ac42aedh,053380d139d95b3dfh
-	DQ	04d2c6dfc5ac42aedh,053380d139d95b3dfh
-	DQ	0650a73548baf63deh,0766a0abb3c77b2a8h
-	DQ	0650a73548baf63deh,0766a0abb3c77b2a8h
-	DQ	081c2c92e47edaee6h,092722c851482353bh
-	DQ	081c2c92e47edaee6h,092722c851482353bh
-	DQ	0a2bfe8a14cf10364h,0a81a664bbc423001h
-	DQ	0a2bfe8a14cf10364h,0a81a664bbc423001h
-	DQ	0c24b8b70d0f89791h,0c76c51a30654be30h
-	DQ	0c24b8b70d0f89791h,0c76c51a30654be30h
-	DQ	0d192e819d6ef5218h,0d69906245565a910h
-	DQ	0d192e819d6ef5218h,0d69906245565a910h
-	DQ	0f40e35855771202ah,0106aa07032bbd1b8h
-	DQ	0f40e35855771202ah,0106aa07032bbd1b8h
-	DQ	019a4c116b8d2d0c8h,01e376c085141ab53h
-	DQ	019a4c116b8d2d0c8h,01e376c085141ab53h
-	DQ	02748774cdf8eeb99h,034b0bcb5e19b48a8h
-	DQ	02748774cdf8eeb99h,034b0bcb5e19b48a8h
-	DQ	0391c0cb3c5c95a63h,04ed8aa4ae3418acbh
-	DQ	0391c0cb3c5c95a63h,04ed8aa4ae3418acbh
-	DQ	05b9cca4f7763e373h,0682e6ff3d6b2b8a3h
-	DQ	05b9cca4f7763e373h,0682e6ff3d6b2b8a3h
-	DQ	0748f82ee5defb2fch,078a5636f43172f60h
-	DQ	0748f82ee5defb2fch,078a5636f43172f60h
-	DQ	084c87814a1f0ab72h,08cc702081a6439ech
-	DQ	084c87814a1f0ab72h,08cc702081a6439ech
-	DQ	090befffa23631e28h,0a4506cebde82bde9h
-	DQ	090befffa23631e28h,0a4506cebde82bde9h
-	DQ	0bef9a3f7b2c67915h,0c67178f2e372532bh
-	DQ	0bef9a3f7b2c67915h,0c67178f2e372532bh
-	DQ	0ca273eceea26619ch,0d186b8c721c0c207h
-	DQ	0ca273eceea26619ch,0d186b8c721c0c207h
-	DQ	0eada7dd6cde0eb1eh,0f57d4f7fee6ed178h
-	DQ	0eada7dd6cde0eb1eh,0f57d4f7fee6ed178h
-	DQ	006f067aa72176fbah,00a637dc5a2c898a6h
-	DQ	006f067aa72176fbah,00a637dc5a2c898a6h
-	DQ	0113f9804bef90daeh,01b710b35131c471bh
-	DQ	0113f9804bef90daeh,01b710b35131c471bh
-	DQ	028db77f523047d84h,032caab7b40c72493h
-	DQ	028db77f523047d84h,032caab7b40c72493h
-	DQ	03c9ebe0a15c9bebch,0431d67c49c100d4ch
-	DQ	03c9ebe0a15c9bebch,0431d67c49c100d4ch
-	DQ	04cc5d4becb3e42b6h,0597f299cfc657e2ah
-	DQ	04cc5d4becb3e42b6h,0597f299cfc657e2ah
-	DQ	05fcb6fab3ad6faech,06c44198c4a475817h
-	DQ	05fcb6fab3ad6faech,06c44198c4a475817h
+K512:
+	DQ	0x428a2f98d728ae22,0x7137449123ef65cd
+	DQ	0x428a2f98d728ae22,0x7137449123ef65cd
+	DQ	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
+	DQ	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
+	DQ	0x3956c25bf348b538,0x59f111f1b605d019
+	DQ	0x3956c25bf348b538,0x59f111f1b605d019
+	DQ	0x923f82a4af194f9b,0xab1c5ed5da6d8118
+	DQ	0x923f82a4af194f9b,0xab1c5ed5da6d8118
+	DQ	0xd807aa98a3030242,0x12835b0145706fbe
+	DQ	0xd807aa98a3030242,0x12835b0145706fbe
+	DQ	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
+	DQ	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
+	DQ	0x72be5d74f27b896f,0x80deb1fe3b1696b1
+	DQ	0x72be5d74f27b896f,0x80deb1fe3b1696b1
+	DQ	0x9bdc06a725c71235,0xc19bf174cf692694
+	DQ	0x9bdc06a725c71235,0xc19bf174cf692694
+	DQ	0xe49b69c19ef14ad2,0xefbe4786384f25e3
+	DQ	0xe49b69c19ef14ad2,0xefbe4786384f25e3
+	DQ	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
+	DQ	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
+	DQ	0x2de92c6f592b0275,0x4a7484aa6ea6e483
+	DQ	0x2de92c6f592b0275,0x4a7484aa6ea6e483
+	DQ	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
+	DQ	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
+	DQ	0x983e5152ee66dfab,0xa831c66d2db43210
+	DQ	0x983e5152ee66dfab,0xa831c66d2db43210
+	DQ	0xb00327c898fb213f,0xbf597fc7beef0ee4
+	DQ	0xb00327c898fb213f,0xbf597fc7beef0ee4
+	DQ	0xc6e00bf33da88fc2,0xd5a79147930aa725
+	DQ	0xc6e00bf33da88fc2,0xd5a79147930aa725
+	DQ	0x06ca6351e003826f,0x142929670a0e6e70
+	DQ	0x06ca6351e003826f,0x142929670a0e6e70
+	DQ	0x27b70a8546d22ffc,0x2e1b21385c26c926
+	DQ	0x27b70a8546d22ffc,0x2e1b21385c26c926
+	DQ	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
+	DQ	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
+	DQ	0x650a73548baf63de,0x766a0abb3c77b2a8
+	DQ	0x650a73548baf63de,0x766a0abb3c77b2a8
+	DQ	0x81c2c92e47edaee6,0x92722c851482353b
+	DQ	0x81c2c92e47edaee6,0x92722c851482353b
+	DQ	0xa2bfe8a14cf10364,0xa81a664bbc423001
+	DQ	0xa2bfe8a14cf10364,0xa81a664bbc423001
+	DQ	0xc24b8b70d0f89791,0xc76c51a30654be30
+	DQ	0xc24b8b70d0f89791,0xc76c51a30654be30
+	DQ	0xd192e819d6ef5218,0xd69906245565a910
+	DQ	0xd192e819d6ef5218,0xd69906245565a910
+	DQ	0xf40e35855771202a,0x106aa07032bbd1b8
+	DQ	0xf40e35855771202a,0x106aa07032bbd1b8
+	DQ	0x19a4c116b8d2d0c8,0x1e376c085141ab53
+	DQ	0x19a4c116b8d2d0c8,0x1e376c085141ab53
+	DQ	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
+	DQ	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
+	DQ	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
+	DQ	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
+	DQ	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
+	DQ	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
+	DQ	0x748f82ee5defb2fc,0x78a5636f43172f60
+	DQ	0x748f82ee5defb2fc,0x78a5636f43172f60
+	DQ	0x84c87814a1f0ab72,0x8cc702081a6439ec
+	DQ	0x84c87814a1f0ab72,0x8cc702081a6439ec
+	DQ	0x90befffa23631e28,0xa4506cebde82bde9
+	DQ	0x90befffa23631e28,0xa4506cebde82bde9
+	DQ	0xbef9a3f7b2c67915,0xc67178f2e372532b
+	DQ	0xbef9a3f7b2c67915,0xc67178f2e372532b
+	DQ	0xca273eceea26619c,0xd186b8c721c0c207
+	DQ	0xca273eceea26619c,0xd186b8c721c0c207
+	DQ	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
+	DQ	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
+	DQ	0x06f067aa72176fba,0x0a637dc5a2c898a6
+	DQ	0x06f067aa72176fba,0x0a637dc5a2c898a6
+	DQ	0x113f9804bef90dae,0x1b710b35131c471b
+	DQ	0x113f9804bef90dae,0x1b710b35131c471b
+	DQ	0x28db77f523047d84,0x32caab7b40c72493
+	DQ	0x28db77f523047d84,0x32caab7b40c72493
+	DQ	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
+	DQ	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
+	DQ	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
+	DQ	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
+	DQ	0x5fcb6fab3ad6faec,0x6c44198c4a475817
+	DQ	0x5fcb6fab3ad6faec,0x6c44198c4a475817
 
-	DQ	00001020304050607h,008090a0b0c0d0e0fh
-	DQ	00001020304050607h,008090a0b0c0d0e0fh
+	DQ	0x0001020304050607,0x08090a0b0c0d0e0f
+	DQ	0x0001020304050607,0x08090a0b0c0d0e0f
 DB	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
 DB	110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
 DB	52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
 DB	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
 DB	111,114,103,62,0
-EXTERN	__imp_RtlVirtualUnwind:NEAR
+EXTERN	__imp_RtlVirtualUnwind
 
 ALIGN	16
-se_handler	PROC PRIVATE
+se_handler:
 	push	rsi
 	push	rdi
 	push	rbx
@@ -1813,74 +1816,74 @@
 	pushfq
 	sub	rsp,64
 
-	mov	rax,QWORD PTR[120+r8]
-	mov	rbx,QWORD PTR[248+r8]
+	mov	rax,QWORD[120+r8]
+	mov	rbx,QWORD[248+r8]
 
-	mov	rsi,QWORD PTR[8+r9]
-	mov	r11,QWORD PTR[56+r9]
+	mov	rsi,QWORD[8+r9]
+	mov	r11,QWORD[56+r9]
 
-	mov	r10d,DWORD PTR[r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	mov	rax,QWORD PTR[152+r8]
+	mov	rax,QWORD[152+r8]
 
-	mov	r10d,DWORD PTR[4+r11]
-	lea	r10,QWORD PTR[r10*1+rsi]
+	mov	r10d,DWORD[4+r11]
+	lea	r10,[r10*1+rsi]
 	cmp	rbx,r10
-	jae	$L$in_prologue
+	jae	NEAR $L$in_prologue
 	mov	rsi,rax
-	mov	rax,QWORD PTR[((128+24))+rax]
-	lea	rax,QWORD PTR[48+rax]
+	mov	rax,QWORD[((128+24))+rax]
+	lea	rax,[48+rax]
 
-	mov	rbx,QWORD PTR[((-8))+rax]
-	mov	rbp,QWORD PTR[((-16))+rax]
-	mov	r12,QWORD PTR[((-24))+rax]
-	mov	r13,QWORD PTR[((-32))+rax]
-	mov	r14,QWORD PTR[((-40))+rax]
-	mov	r15,QWORD PTR[((-48))+rax]
-	mov	QWORD PTR[144+r8],rbx
-	mov	QWORD PTR[160+r8],rbp
-	mov	QWORD PTR[216+r8],r12
-	mov	QWORD PTR[224+r8],r13
-	mov	QWORD PTR[232+r8],r14
-	mov	QWORD PTR[240+r8],r15
+	mov	rbx,QWORD[((-8))+rax]
+	mov	rbp,QWORD[((-16))+rax]
+	mov	r12,QWORD[((-24))+rax]
+	mov	r13,QWORD[((-32))+rax]
+	mov	r14,QWORD[((-40))+rax]
+	mov	r15,QWORD[((-48))+rax]
+	mov	QWORD[144+r8],rbx
+	mov	QWORD[160+r8],rbp
+	mov	QWORD[216+r8],r12
+	mov	QWORD[224+r8],r13
+	mov	QWORD[232+r8],r14
+	mov	QWORD[240+r8],r15
 
-	lea	r10,QWORD PTR[$L$epilogue]
+	lea	r10,[$L$epilogue]
 	cmp	rbx,r10
-	jb	$L$in_prologue
+	jb	NEAR $L$in_prologue
 
-	lea	rsi,QWORD PTR[((128+32))+rsi]
-	lea	rdi,QWORD PTR[512+r8]
+	lea	rsi,[((128+32))+rsi]
+	lea	rdi,[512+r8]
 	mov	ecx,12
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
-$L$in_prologue::
-	mov	rdi,QWORD PTR[8+rax]
-	mov	rsi,QWORD PTR[16+rax]
-	mov	QWORD PTR[152+r8],rax
-	mov	QWORD PTR[168+r8],rsi
-	mov	QWORD PTR[176+r8],rdi
+$L$in_prologue:
+	mov	rdi,QWORD[8+rax]
+	mov	rsi,QWORD[16+rax]
+	mov	QWORD[152+r8],rax
+	mov	QWORD[168+r8],rsi
+	mov	QWORD[176+r8],rdi
 
-	mov	rdi,QWORD PTR[40+r9]
+	mov	rdi,QWORD[40+r9]
 	mov	rsi,r8
 	mov	ecx,154
-	DD	0a548f3fch
+	DD	0xa548f3fc
 
 	mov	rsi,r9
 	xor	rcx,rcx
-	mov	rdx,QWORD PTR[8+rsi]
-	mov	r8,QWORD PTR[rsi]
-	mov	r9,QWORD PTR[16+rsi]
-	mov	r10,QWORD PTR[40+rsi]
-	lea	r11,QWORD PTR[56+rsi]
-	lea	r12,QWORD PTR[24+rsi]
-	mov	QWORD PTR[32+rsp],r10
-	mov	QWORD PTR[40+rsp],r11
-	mov	QWORD PTR[48+rsp],r12
-	mov	QWORD PTR[56+rsp],rcx
-	call	QWORD PTR[__imp_RtlVirtualUnwind]
+	mov	rdx,QWORD[8+rsi]
+	mov	r8,QWORD[rsi]
+	mov	r9,QWORD[16+rsi]
+	mov	r10,QWORD[40+rsi]
+	lea	r11,[56+rsi]
+	lea	r12,[24+rsi]
+	mov	QWORD[32+rsp],r10
+	mov	QWORD[40+rsp],r11
+	mov	QWORD[48+rsp],r12
+	mov	QWORD[56+rsp],rcx
+	call	QWORD[__imp_RtlVirtualUnwind]
 
 	mov	eax,1
 	add	rsp,64
@@ -1894,20 +1897,15 @@
 	pop	rdi
 	pop	rsi
 	DB	0F3h,0C3h		;repret
-se_handler	ENDP
-.text$	ENDS
-.pdata	SEGMENT READONLY ALIGN(4)
-ALIGN	4
-	DD	imagerel $L$SEH_begin_sha512_block_data_order
-	DD	imagerel $L$SEH_end_sha512_block_data_order
-	DD	imagerel $L$SEH_info_sha512_block_data_order
-.pdata	ENDS
-.xdata	SEGMENT READONLY ALIGN(8)
-ALIGN	8
-$L$SEH_info_sha512_block_data_order::
-DB	9,0,0,0
-	DD	imagerel se_handler
-	DD	imagerel $L$prologue,imagerel $L$epilogue
 
-.xdata	ENDS
-END
+section	.pdata rdata align=4
+ALIGN	4
+	DD	$L$SEH_begin_sha512_block_data_order wrt ..imagebase
+	DD	$L$SEH_end_sha512_block_data_order wrt ..imagebase
+	DD	$L$SEH_info_sha512_block_data_order wrt ..imagebase
+section	.xdata rdata align=8
+ALIGN	8
+$L$SEH_info_sha512_block_data_order:
+DB	9,0,0,0
+	DD	se_handler wrt ..imagebase
+	DD	$L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase
diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn
index 0f21450..18cf816 100644
--- a/third_party/zlib/BUILD.gn
+++ b/third_party/zlib/BUILD.gn
@@ -6,6 +6,15 @@
   include_dirs = [ "." ]
 }
 
+static_library("zlib_x86_simd") {
+  if (cpu_arch == "x86" || cpu_arch == "x64") {
+    sources = [ "crc_folding.c", "fill_window_sse.c" ]
+    cflags = [ "-msse2", "-msse4.2", "-mpclmul" ]
+  } else {
+    sources = [ "simd_stub.c"]
+  }
+}
+
 static_library("zlib") {
   if (!is_win) {
     # Don't stomp on "libzlib" on other platforms.
@@ -36,16 +45,22 @@
     "trees.c",
     "trees.h",
     "uncompr.c",
+    "x86.h",
     "zconf.h",
     "zlib.h",
     "zutil.c",
     "zutil.h",
   ]
 
+  if (cpu_arch == "x86" || cpu_arch == "x64") {
+    sources += [ "x86.c" ]
+  }
+
   configs -= [ "//build/config/compiler:chromium_code" ]
   configs += [ "//build/config/compiler:no_chromium_code" ]
 
   public_configs = [ ":zlib_config" ]
+  deps = [ ":zlib_x86_simd" ]
 }
 
 static_library("minizip") {
diff --git a/third_party/zlib/README.chromium b/third_party/zlib/README.chromium
index c9e06ba..b90bcff 100644
--- a/third_party/zlib/README.chromium
+++ b/third_party/zlib/README.chromium
@@ -19,3 +19,19 @@
 
 A more significant change to support mixed-source data compression. See
 crbug.com/139744 and mixed-source.patch.
+
+Integrated Intel SIMD optimisations from: https://github.com/jtkukunas/zlib/
+and modified to accomodate the older version and existing changes in tree.
+
+This introduces new files: simd_stub.c, crc_folding.c, fill_window_sse.c and
+x86.[ch]. All but the latter are built into a static library to allow the
+compiler to use the desired instructions only when valid. The latter version is
+only built on x86 (32-bit and 64-bit) systems with it's functionality stubbed
+on the others.
+
+Other changes to accomodate:
+- fill_window() implementation calls into _sse() variant when supported and the
+  original implementation renamed to _c()
+- read_buf was moved from local to ZLIB_INTERNAL for fill_window_sse.c to use
+- INSERT_STRING macro was made a function, insert_string() and an implementation using CRC instruction added
+- some crc funcionality moved into crc32.c
diff --git a/third_party/zlib/crc32.c b/third_party/zlib/crc32.c
index 91be372..75f2290 100644
--- a/third_party/zlib/crc32.c
+++ b/third_party/zlib/crc32.c
@@ -26,6 +26,8 @@
 #  endif /* !DYNAMIC_CRC_TABLE */
 #endif /* MAKECRCH */
 
+#include "deflate.h"
+#include "x86.h"
 #include "zutil.h"      /* for STDC and FAR definitions */
 
 #define local static
@@ -440,3 +442,28 @@
 {
     return crc32_combine_(crc1, crc2, len2);
 }
+
+ZLIB_INTERNAL void crc_reset(deflate_state *const s)
+{
+    if (x86_cpu_enable_simd) {
+        crc_fold_init(s);
+        return;
+    }
+    s->strm->adler = crc32(0L, Z_NULL, 0);
+}
+
+ZLIB_INTERNAL void crc_finalize(deflate_state *const s)
+{
+    if (x86_cpu_enable_simd)
+        s->strm->adler = crc_fold_512to32(s);
+}
+
+ZLIB_INTERNAL void copy_with_crc(z_streamp strm, Bytef *dst, long size)
+{
+    if (x86_cpu_enable_simd) {
+        crc_fold_copy(strm->state, dst, strm->next_in, size);
+        return;
+    }
+    zmemcpy(dst, strm->next_in, size);
+    strm->adler = crc32(strm->adler, dst, size);
+}
diff --git a/third_party/zlib/crc_folding.c b/third_party/zlib/crc_folding.c
new file mode 100644
index 0000000..98c559c
--- /dev/null
+++ b/third_party/zlib/crc_folding.c
@@ -0,0 +1,493 @@
+/*
+ * Compute the CRC32 using a parallelized folding approach with the PCLMULQDQ
+ * instruction.
+ *
+ * A white paper describing this algorithm can be found at:
+ * http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
+ *
+ * Copyright (C) 2013 Intel Corporation. All rights reserved.
+ * Authors:
+ * 	Wajdi Feghali   <wajdi.k.feghali@intel.com>
+ * 	Jim Guilford    <james.guilford@intel.com>
+ * 	Vinodh Gopal    <vinodh.gopal@intel.com>
+ * 	Erdinc Ozturk   <erdinc.ozturk@intel.com>
+ * 	Jim Kukunas     <james.t.kukunas@linux.intel.com>
+ *
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "deflate.h"
+
+#include <inttypes.h>
+#include <emmintrin.h>
+#include <immintrin.h>
+#include <wmmintrin.h>
+
+#define CRC_LOAD(s) \
+    do { \
+        __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0);\
+        __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1);\
+        __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2);\
+        __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3);\
+        __m128i xmm_crc_part = _mm_loadu_si128((__m128i *)s->crc0 + 4);
+
+#define CRC_SAVE(s) \
+        _mm_storeu_si128((__m128i *)s->crc0 + 0, xmm_crc0);\
+        _mm_storeu_si128((__m128i *)s->crc0 + 1, xmm_crc1);\
+        _mm_storeu_si128((__m128i *)s->crc0 + 2, xmm_crc2);\
+        _mm_storeu_si128((__m128i *)s->crc0 + 3, xmm_crc3);\
+        _mm_storeu_si128((__m128i *)s->crc0 + 4, xmm_crc_part);\
+    } while (0);
+
+ZLIB_INTERNAL void crc_fold_init(deflate_state *const s)
+{
+    CRC_LOAD(s)
+
+    xmm_crc0 = _mm_cvtsi32_si128(0x9db42487);
+    xmm_crc1 = _mm_setzero_si128();
+    xmm_crc2 = _mm_setzero_si128();
+    xmm_crc3 = _mm_setzero_si128();
+
+    CRC_SAVE(s)
+
+    s->strm->adler = 0;
+}
+
+local void fold_1(deflate_state *const s,
+        __m128i *xmm_crc0, __m128i *xmm_crc1,
+        __m128i *xmm_crc2, __m128i *xmm_crc3)
+{
+    const __m128i xmm_fold4 = _mm_set_epi32(
+            0x00000001, 0x54442bd4,
+            0x00000001, 0xc6e41596);
+
+    __m128i x_tmp3;
+    __m128 ps_crc0, ps_crc3, ps_res;
+
+    x_tmp3 = *xmm_crc3;
+
+    *xmm_crc3 = *xmm_crc0;
+    *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01);
+    *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10);
+    ps_crc0 = _mm_castsi128_ps(*xmm_crc0);
+    ps_crc3 = _mm_castsi128_ps(*xmm_crc3);
+    ps_res = _mm_xor_ps(ps_crc0, ps_crc3);
+
+    *xmm_crc0 = *xmm_crc1;
+    *xmm_crc1 = *xmm_crc2;
+    *xmm_crc2 = x_tmp3;
+    *xmm_crc3 = _mm_castps_si128(ps_res);
+}
+
+local void fold_2(deflate_state *const s,
+        __m128i *xmm_crc0, __m128i *xmm_crc1,
+        __m128i *xmm_crc2, __m128i *xmm_crc3)
+{
+    const __m128i xmm_fold4 = _mm_set_epi32(
+            0x00000001, 0x54442bd4,
+            0x00000001, 0xc6e41596);
+
+    __m128i x_tmp3, x_tmp2;
+    __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res31, ps_res20;
+
+    x_tmp3 = *xmm_crc3;
+    x_tmp2 = *xmm_crc2;
+
+    *xmm_crc3 = *xmm_crc1;
+    *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01);
+    *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10);
+    ps_crc3 = _mm_castsi128_ps(*xmm_crc3);
+    ps_crc1 = _mm_castsi128_ps(*xmm_crc1);
+    ps_res31= _mm_xor_ps(ps_crc3, ps_crc1);
+
+    *xmm_crc2 = *xmm_crc0;
+    *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01);
+    *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10);
+    ps_crc0 = _mm_castsi128_ps(*xmm_crc0);
+    ps_crc2 = _mm_castsi128_ps(*xmm_crc2);
+    ps_res20= _mm_xor_ps(ps_crc0, ps_crc2);
+
+    *xmm_crc0 = x_tmp2;
+    *xmm_crc1 = x_tmp3;
+    *xmm_crc2 = _mm_castps_si128(ps_res20);
+    *xmm_crc3 = _mm_castps_si128(ps_res31);
+}
+
+local void fold_3(deflate_state *const s,
+        __m128i *xmm_crc0, __m128i *xmm_crc1,
+        __m128i *xmm_crc2, __m128i *xmm_crc3)
+{
+    const __m128i xmm_fold4 = _mm_set_epi32(
+            0x00000001, 0x54442bd4,
+            0x00000001, 0xc6e41596);
+
+    __m128i x_tmp3;
+    __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res32, ps_res21, ps_res10;
+
+    x_tmp3 = *xmm_crc3;
+
+    *xmm_crc3 = *xmm_crc2;
+    *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01);
+    *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10);
+    ps_crc2 = _mm_castsi128_ps(*xmm_crc2);
+    ps_crc3 = _mm_castsi128_ps(*xmm_crc3);
+    ps_res32 = _mm_xor_ps(ps_crc2, ps_crc3);
+
+    *xmm_crc2 = *xmm_crc1;
+    *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01);
+    *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10);
+    ps_crc1 = _mm_castsi128_ps(*xmm_crc1);
+    ps_crc2 = _mm_castsi128_ps(*xmm_crc2);
+    ps_res21= _mm_xor_ps(ps_crc1, ps_crc2);
+
+    *xmm_crc1 = *xmm_crc0;
+    *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01);
+    *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x10);
+    ps_crc0 = _mm_castsi128_ps(*xmm_crc0);
+    ps_crc1 = _mm_castsi128_ps(*xmm_crc1);
+    ps_res10= _mm_xor_ps(ps_crc0, ps_crc1);
+
+    *xmm_crc0 = x_tmp3;
+    *xmm_crc1 = _mm_castps_si128(ps_res10);
+    *xmm_crc2 = _mm_castps_si128(ps_res21);
+    *xmm_crc3 = _mm_castps_si128(ps_res32);
+}
+
+local void fold_4(deflate_state *const s,
+        __m128i *xmm_crc0, __m128i *xmm_crc1,
+        __m128i *xmm_crc2, __m128i *xmm_crc3)
+{
+    const __m128i xmm_fold4 = _mm_set_epi32(
+            0x00000001, 0x54442bd4,
+            0x00000001, 0xc6e41596);
+
+    __m128i x_tmp0, x_tmp1, x_tmp2, x_tmp3;
+    __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3;
+    __m128 ps_t0, ps_t1, ps_t2, ps_t3;
+    __m128 ps_res0, ps_res1, ps_res2, ps_res3;
+
+    x_tmp0 = *xmm_crc0;
+    x_tmp1 = *xmm_crc1;
+    x_tmp2 = *xmm_crc2;
+    x_tmp3 = *xmm_crc3;
+
+    *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01);
+    x_tmp0 = _mm_clmulepi64_si128(x_tmp0, xmm_fold4, 0x10);
+    ps_crc0 = _mm_castsi128_ps(*xmm_crc0);
+    ps_t0 = _mm_castsi128_ps(x_tmp0);
+    ps_res0 = _mm_xor_ps(ps_crc0, ps_t0);
+
+    *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01);
+    x_tmp1 = _mm_clmulepi64_si128(x_tmp1, xmm_fold4, 0x10);
+    ps_crc1 = _mm_castsi128_ps(*xmm_crc1);
+    ps_t1 = _mm_castsi128_ps(x_tmp1);
+    ps_res1 = _mm_xor_ps(ps_crc1, ps_t1);
+
+    *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01);
+    x_tmp2 = _mm_clmulepi64_si128(x_tmp2, xmm_fold4, 0x10);
+    ps_crc2 = _mm_castsi128_ps(*xmm_crc2);
+    ps_t2 = _mm_castsi128_ps(x_tmp2);
+    ps_res2 = _mm_xor_ps(ps_crc2, ps_t2);
+
+    *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x01);
+    x_tmp3 = _mm_clmulepi64_si128(x_tmp3, xmm_fold4, 0x10);
+    ps_crc3 = _mm_castsi128_ps(*xmm_crc3);
+    ps_t3 = _mm_castsi128_ps(x_tmp3);
+    ps_res3 = _mm_xor_ps(ps_crc3, ps_t3);
+
+    *xmm_crc0 = _mm_castps_si128(ps_res0);
+    *xmm_crc1 = _mm_castps_si128(ps_res1);
+    *xmm_crc2 = _mm_castps_si128(ps_res2);
+    *xmm_crc3 = _mm_castps_si128(ps_res3);
+}
+
+local const unsigned zalign(32) pshufb_shf_table[60] = {
+	0x84838281,0x88878685,0x8c8b8a89,0x008f8e8d, /* shl 15 (16 - 1)/shr1 */
+	0x85848382,0x89888786,0x8d8c8b8a,0x01008f8e, /* shl 14 (16 - 3)/shr2 */
+	0x86858483,0x8a898887,0x8e8d8c8b,0x0201008f, /* shl 13 (16 - 4)/shr3 */
+	0x87868584,0x8b8a8988,0x8f8e8d8c,0x03020100, /* shl 12 (16 - 4)/shr4 */
+	0x88878685,0x8c8b8a89,0x008f8e8d,0x04030201, /* shl 11 (16 - 5)/shr5 */
+	0x89888786,0x8d8c8b8a,0x01008f8e,0x05040302, /* shl 10 (16 - 6)/shr6 */
+	0x8a898887,0x8e8d8c8b,0x0201008f,0x06050403, /* shl  9 (16 - 7)/shr7 */
+	0x8b8a8988,0x8f8e8d8c,0x03020100,0x07060504, /* shl  8 (16 - 8)/shr8 */
+	0x8c8b8a89,0x008f8e8d,0x04030201,0x08070605, /* shl  7 (16 - 9)/shr9 */
+	0x8d8c8b8a,0x01008f8e,0x05040302,0x09080706, /* shl  6 (16 -10)/shr10*/
+	0x8e8d8c8b,0x0201008f,0x06050403,0x0a090807, /* shl  5 (16 -11)/shr11*/
+	0x8f8e8d8c,0x03020100,0x07060504,0x0b0a0908, /* shl  4 (16 -12)/shr12*/
+	0x008f8e8d,0x04030201,0x08070605,0x0c0b0a09, /* shl  3 (16 -13)/shr13*/
+	0x01008f8e,0x05040302,0x09080706,0x0d0c0b0a, /* shl  2 (16 -14)/shr14*/
+	0x0201008f,0x06050403,0x0a090807,0x0e0d0c0b  /* shl  1 (16 -15)/shr15*/
+};
+
+local void partial_fold(deflate_state *const s, const size_t len,
+        __m128i *xmm_crc0, __m128i *xmm_crc1,
+        __m128i *xmm_crc2, __m128i *xmm_crc3,
+        __m128i *xmm_crc_part)
+{
+
+    const __m128i xmm_fold4 = _mm_set_epi32(
+            0x00000001, 0x54442bd4,
+            0x00000001, 0xc6e41596);
+    const __m128i xmm_mask3 = _mm_set1_epi32(0x80808080);
+
+    __m128i xmm_shl, xmm_shr, xmm_tmp1, xmm_tmp2, xmm_tmp3;
+    __m128i xmm_a0_0, xmm_a0_1;
+    __m128 ps_crc3, psa0_0, psa0_1, ps_res;
+
+    xmm_shl = _mm_load_si128((__m128i *)pshufb_shf_table + (len - 1));
+    xmm_shr = xmm_shl;
+    xmm_shr = _mm_xor_si128(xmm_shr, xmm_mask3);
+
+    xmm_a0_0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shl);
+
+    *xmm_crc0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shr);
+    xmm_tmp1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shl);
+    *xmm_crc0 = _mm_or_si128(*xmm_crc0, xmm_tmp1);
+
+    *xmm_crc1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shr);
+    xmm_tmp2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shl);
+    *xmm_crc1 = _mm_or_si128(*xmm_crc1, xmm_tmp2);
+
+    *xmm_crc2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shr);
+    xmm_tmp3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shl);
+    *xmm_crc2 = _mm_or_si128(*xmm_crc2, xmm_tmp3);
+
+    *xmm_crc3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shr);
+    *xmm_crc_part = _mm_shuffle_epi8(*xmm_crc_part, xmm_shl);
+    *xmm_crc3 = _mm_or_si128(*xmm_crc3, *xmm_crc_part);
+
+    xmm_a0_1 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x10);
+    xmm_a0_0 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x01);
+
+    ps_crc3 = _mm_castsi128_ps(*xmm_crc3);
+    psa0_0 = _mm_castsi128_ps(xmm_a0_0);
+    psa0_1 = _mm_castsi128_ps(xmm_a0_1);
+
+    ps_res = _mm_xor_ps(ps_crc3, psa0_0);
+    ps_res = _mm_xor_ps(ps_res, psa0_1);
+
+    *xmm_crc3 = _mm_castps_si128(ps_res);
+}
+
+ZLIB_INTERNAL void crc_fold_copy(deflate_state *const s,
+        unsigned char *dst, const unsigned char *src, long len)
+{
+    unsigned long algn_diff;
+    __m128i xmm_t0, xmm_t1, xmm_t2, xmm_t3;
+
+    CRC_LOAD(s)
+
+    if (len < 16) {
+        if (len == 0)
+            return;
+        goto partial;
+    }
+
+    algn_diff = 0 - (unsigned long)src & 0xF;
+    if (algn_diff) {
+        xmm_crc_part = _mm_loadu_si128((__m128i *)src);
+        _mm_storeu_si128((__m128i *)dst, xmm_crc_part);
+
+        dst += algn_diff;
+        src += algn_diff;
+        len -= algn_diff;
+
+        partial_fold(s, algn_diff, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3,
+            &xmm_crc_part);
+    }
+
+    while ((len -= 64) >= 0) {
+        xmm_t0 = _mm_load_si128((__m128i *)src);
+        xmm_t1 = _mm_load_si128((__m128i *)src + 1);
+        xmm_t2 = _mm_load_si128((__m128i *)src + 2);
+        xmm_t3 = _mm_load_si128((__m128i *)src + 3);
+
+        fold_4(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
+
+        _mm_storeu_si128((__m128i *)dst, xmm_t0);
+        _mm_storeu_si128((__m128i *)dst + 1, xmm_t1);
+        _mm_storeu_si128((__m128i *)dst + 2, xmm_t2);
+        _mm_storeu_si128((__m128i *)dst + 3, xmm_t3);
+
+        xmm_crc0 = _mm_xor_si128(xmm_crc0, xmm_t0);
+        xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t1);
+        xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t2);
+        xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t3);
+
+        src += 64;
+        dst += 64;
+    }
+
+    /*
+     * len = num bytes left - 64
+     */
+    if (len + 16 >= 0) {
+        len += 16;
+
+        xmm_t0 = _mm_load_si128((__m128i *)src);
+        xmm_t1 = _mm_load_si128((__m128i *)src + 1);
+        xmm_t2 = _mm_load_si128((__m128i *)src + 2);
+
+        fold_3(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
+
+        _mm_storeu_si128((__m128i *)dst, xmm_t0);
+        _mm_storeu_si128((__m128i *)dst + 1, xmm_t1);
+        _mm_storeu_si128((__m128i *)dst + 2, xmm_t2);
+
+        xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t0);
+        xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t1);
+        xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t2);
+
+        if (len == 0)
+            goto done;
+
+        dst += 48;
+        src += 48;
+    } else if (len + 32 >= 0) {
+        len += 32;
+
+        xmm_t0 = _mm_load_si128((__m128i *)src);
+        xmm_t1 = _mm_load_si128((__m128i *)src + 1);
+
+        fold_2(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
+
+        _mm_storeu_si128((__m128i *)dst, xmm_t0);
+        _mm_storeu_si128((__m128i *)dst + 1, xmm_t1);
+
+        xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t0);
+        xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t1);
+
+        if (len == 0)
+            goto done;
+
+        dst += 32;
+        src += 32;
+    } else if (len + 48 >= 0) {
+        len += 48;
+
+        xmm_t0 = _mm_load_si128((__m128i *)src);
+
+        fold_1(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3);
+
+        _mm_storeu_si128((__m128i *)dst, xmm_t0);
+
+        xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t0);
+
+        if (len == 0)
+            goto done;
+
+        dst += 16;
+        src += 16;
+    } else {
+        len += 64;
+        if (len == 0)
+            goto done;
+    }
+
+partial:
+
+#if defined(_MSC_VER)
+    /* VS does not permit the use of _mm_set_epi64x in 32-bit builds */
+    {
+        int32_t parts[4] = {0, 0, 0, 0};
+        memcpy(&parts, src, len);
+        xmm_crc_part = _mm_set_epi32(parts[3], parts[2], parts[1], parts[0]);
+    }
+#else
+    {
+        int64_t parts[2] = {0, 0};
+        memcpy(&parts, src, len);
+        xmm_crc_part = _mm_set_epi64x(parts[1], parts[0]);
+    }
+#endif
+
+    _mm_storeu_si128((__m128i *)dst, xmm_crc_part);
+    partial_fold(s, len, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3,
+        &xmm_crc_part);
+done:
+    CRC_SAVE(s)
+}
+
+local const unsigned zalign(16) crc_k[] = {
+    0xccaa009e, 0x00000000, /* rk1 */
+    0x751997d0, 0x00000001, /* rk2 */
+    0xccaa009e, 0x00000000, /* rk5 */
+    0x63cd6124, 0x00000001, /* rk6 */
+    0xf7011640, 0x00000001, /* rk7 */
+    0xdb710640, 0x00000001  /* rk8 */
+};
+
+local const unsigned zalign(16) crc_mask[4] = {
+    0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000
+};
+
+local const unsigned zalign(16) crc_mask2[4] = {
+    0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+};
+
+unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state *const s)
+{
+    const __m128i xmm_mask  = _mm_load_si128((__m128i *)crc_mask);
+    const __m128i xmm_mask2 = _mm_load_si128((__m128i *)crc_mask2);
+
+    unsigned crc;
+    __m128i x_tmp0, x_tmp1, x_tmp2, crc_fold;
+
+    CRC_LOAD(s)
+
+    /*
+     * k1
+     */
+    crc_fold = _mm_load_si128((__m128i *)crc_k);
+
+    x_tmp0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x10);
+    xmm_crc0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x01);
+    xmm_crc1 = _mm_xor_si128(xmm_crc1, x_tmp0);
+    xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_crc0);
+
+    x_tmp1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x10);
+    xmm_crc1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x01);
+    xmm_crc2 = _mm_xor_si128(xmm_crc2, x_tmp1);
+    xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_crc1);
+
+    x_tmp2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x10);
+    xmm_crc2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x01);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, x_tmp2);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2);
+
+    /*
+     * k5
+     */
+    crc_fold = _mm_load_si128((__m128i *)crc_k + 1);
+
+    xmm_crc0 = xmm_crc3;
+    xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0);
+    xmm_crc0 = _mm_srli_si128(xmm_crc0, 8);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0);
+
+    xmm_crc0 = xmm_crc3;
+    xmm_crc3 = _mm_slli_si128(xmm_crc3, 4);
+    xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0);
+    xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask2);
+
+    /*
+     * k7
+     */
+    xmm_crc1 = xmm_crc3;
+    xmm_crc2 = xmm_crc3;
+    crc_fold = _mm_load_si128((__m128i *)crc_k + 2);
+
+    xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2);
+    xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask);
+
+    xmm_crc2 = xmm_crc3;
+    xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2);
+    xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc1);
+
+    crc = _mm_extract_epi32(xmm_crc3, 2);
+    return ~crc;
+    CRC_SAVE(s)
+}
diff --git a/third_party/zlib/deflate.c b/third_party/zlib/deflate.c
index 8043e5b..55ec215 100644
--- a/third_party/zlib/deflate.c
+++ b/third_party/zlib/deflate.c
@@ -49,7 +49,10 @@
 
 /* @(#) $Id$ */
 
+#include <assert.h>
+
 #include "deflate.h"
+#include "x86.h"
 
 const char deflate_copyright[] =
    " deflate 1.2.5 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
@@ -85,7 +88,7 @@
 local void lm_init        OF((deflate_state *s));
 local void putShortMSB    OF((deflate_state *s, uInt b));
 local void flush_pending  OF((z_streamp strm));
-local int read_buf        OF((z_streamp strm, Bytef *buf, unsigned size));
+
 #ifdef ASMV
       void match_init OF((void)); /* asm code initialization */
       uInt longest_match  OF((deflate_state *s, IPos cur_match, int clas));
@@ -98,6 +101,23 @@
                             int length));
 #endif
 
+/* For fill_window_sse.c to use */
+ZLIB_INTERNAL int read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
+
+/* From crc32.c */
+extern void ZLIB_INTERNAL crc_reset(deflate_state *const s);
+extern void ZLIB_INTERNAL crc_finalize(deflate_state *const s);
+extern void ZLIB_INTERNAL copy_with_crc(z_streamp strm, Bytef *dst, long size);
+
+#ifdef _MSC_VER
+#define INLINE __inline
+#else
+#define INLINE inline
+#endif
+
+/* Inline optimisation */
+local INLINE Pos insert_string_sse(deflate_state *const s, const Pos str);
+
 /* ===========================================================================
  * Local data
  */
@@ -164,7 +184,6 @@
  */
 #define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
 
-
 /* ===========================================================================
  * Insert string str in the dictionary and set match_head to the previous head
  * of the hash chain (the most recent string with same hash key). Return
@@ -175,17 +194,28 @@
  *    input characters and the first MIN_MATCH bytes of str are valid
  *    (except for the last MIN_MATCH-1 bytes of the input file).
  */
+local INLINE Pos insert_string_c(deflate_state *const s, const Pos str)
+{
+    Pos ret;
+
+    UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]);
 #ifdef FASTEST
-#define INSERT_STRING(s, str, match_head) \
-   (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
-    match_head = s->head[s->ins_h], \
-    s->head[s->ins_h] = (Pos)(str))
+    ret = s->head[s->ins_h];
 #else
-#define INSERT_STRING(s, str, match_head) \
-   (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
-    match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \
-    s->head[s->ins_h] = (Pos)(str))
+    ret = s->prev[str & s->w_mask] = s->head[s->ins_h];
 #endif
+    s->head[s->ins_h] = str;
+
+    return ret;
+}
+
+local INLINE Pos insert_string(deflate_state *const s, const Pos str)
+{
+    if (x86_cpu_enable_simd)
+        return insert_string_sse(s, str);
+    return insert_string_c(s, str);
+}
+
 
 /* ===========================================================================
  * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
@@ -219,6 +249,7 @@
     const char *version;
     int stream_size;
 {
+    unsigned window_padding = 8;
     deflate_state *s;
     int wrap = 1;
     static const char my_version[] = ZLIB_VERSION;
@@ -228,6 +259,8 @@
      * output size for (length,distance) codes is <= 24 bits.
      */
 
+    x86_check_features();
+
     if (version == Z_NULL || version[0] != my_version[0] ||
         stream_size != sizeof(z_stream)) {
         return Z_VERSION_ERROR;
@@ -274,12 +307,17 @@
     s->w_size = 1 << s->w_bits;
     s->w_mask = s->w_size - 1;
 
-    s->hash_bits = memLevel + 7;
+    if (x86_cpu_enable_simd) {
+        s->hash_bits = 15;
+    } else {
+        s->hash_bits = memLevel + 7;
+    }
+
     s->hash_size = 1 << s->hash_bits;
     s->hash_mask = s->hash_size - 1;
     s->hash_shift =  ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
 
-    s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
+    s->window = (Bytef *) ZALLOC(strm, s->w_size + window_padding, 2*sizeof(Byte));
     s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
     s->head   = (Posf *)  ZALLOC(strm, s->hash_size, sizeof(Pos));
     s->class_bitmap = NULL;
@@ -347,7 +385,7 @@
     s->ins_h = s->window[0];
     UPDATE_HASH(s, s->ins_h, s->window[1]);
     for (n = 0; n <= length - MIN_MATCH; n++) {
-        INSERT_STRING(s, n, hash_head);
+        insert_string(s, n);
     }
     if (hash_head) hash_head = 0;  /* to make compiler happy */
     return Z_OK;
@@ -613,7 +651,7 @@
     if (s->status == INIT_STATE) {
 #ifdef GZIP
         if (s->wrap == 2) {
-            strm->adler = crc32(0L, Z_NULL, 0);
+            crc_reset(s);
             put_byte(s, 31);
             put_byte(s, 139);
             put_byte(s, 8);
@@ -891,6 +929,7 @@
     /* Write the trailer */
 #ifdef GZIP
     if (s->wrap == 2) {
+        crc_finalize(s);
         put_byte(s, (Byte)(strm->adler & 0xff));
         put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
         put_byte(s, (Byte)((strm->adler >> 16) & 0xff));
@@ -1013,7 +1052,7 @@
  * allocating a large strm->next_in buffer and copying from it.
  * (See also flush_pending()).
  */
-local int read_buf(strm, buf, size)
+ZLIB_INTERNAL int read_buf(strm, buf, size)
     z_streamp strm;
     Bytef *buf;
     unsigned size;
@@ -1025,15 +1064,17 @@
 
     strm->avail_in  -= len;
 
-    if (strm->state->wrap == 1) {
-        strm->adler = adler32(strm->adler, strm->next_in, len);
-    }
 #ifdef GZIP
-    else if (strm->state->wrap == 2) {
-        strm->adler = crc32(strm->adler, strm->next_in, len);
+    if (strm->state->wrap == 2) {
+        copy_with_crc(strm, buf, len);
     }
+    else
 #endif
-    zmemcpy(buf, strm->next_in, len);
+    {
+        zmemcpy(buf, strm->next_in, len);
+        if (strm->state->wrap == 1)
+            strm->adler = adler32(strm->adler, buf, len);
+    }
     strm->next_in  += len;
     strm->total_in += len;
 
@@ -1445,7 +1486,19 @@
  *    performed for at least two bytes (required for the zip translate_eol
  *    option -- not supported here).
  */
-local void fill_window(s)
+local void fill_window_c(deflate_state *s);
+
+local void fill_window(deflate_state *s)
+{
+    if (x86_cpu_enable_simd) {
+        fill_window_sse(s);
+        return;
+    }
+
+    fill_window_c(s);
+}
+
+local void fill_window_c(s)
     deflate_state *s;
 {
     register unsigned n, m;
@@ -1711,7 +1764,7 @@
          */
         hash_head = NIL;
         if (s->lookahead >= MIN_MATCH) {
-            INSERT_STRING(s, s->strstart, hash_head);
+            hash_head = insert_string(s, s->strstart);
         }
 
         /* Find the longest match, discarding those <= prev_length.
@@ -1742,7 +1795,7 @@
                 s->match_length--; /* string at strstart already in table */
                 do {
                     s->strstart++;
-                    INSERT_STRING(s, s->strstart, hash_head);
+                    hash_head = insert_string(s, s->strstart);
                     /* strstart never exceeds WSIZE-MAX_MATCH, so there are
                      * always MIN_MATCH bytes ahead.
                      */
@@ -1821,7 +1874,7 @@
          */
         hash_head = NIL;
         if (s->lookahead >= MIN_MATCH) {
-            INSERT_STRING(s, s->strstart, hash_head);
+            hash_head = insert_string(s, s->strstart);
         }
 
         /* Find the longest match, discarding those <= prev_length.
@@ -1890,7 +1943,7 @@
             s->prev_length -= 2;
             do {
                 if (++s->strstart <= max_insert) {
-                    INSERT_STRING(s, s->strstart, hash_head);
+                    hash_head = insert_string(s, s->strstart);
                 }
             } while (--s->prev_length != 0);
             s->match_available = 0;
@@ -2031,3 +2084,37 @@
     FLUSH_BLOCK(s, flush == Z_FINISH);
     return flush == Z_FINISH ? finish_done : block_done;
 }
+
+/* Safe to inline this as GCC/clang will use inline asm and Visual Studio will
+ * use intrinsic without extra params
+ */
+local INLINE Pos insert_string_sse(deflate_state *const s, const Pos str)
+{
+    Pos ret;
+    unsigned *ip, val, h = 0;
+
+    ip = (unsigned *)&s->window[str];
+    val = *ip;
+
+    if (s->level >= 6)
+        val &= 0xFFFFFF;
+
+/* Windows clang should use inline asm */
+#if defined(_MSC_VER) && !defined(__clang__)
+    h = _mm_crc32_u32(h, val);
+#elif defined(__i386__) || defined(__amd64__)
+    __asm__ __volatile__ (
+        "crc32 %1,%0\n\t"
+    : "+r" (h)
+    : "r" (val)
+    );
+#else
+    /* This should never happen */
+    assert(0);
+#endif
+
+    ret = s->head[h & s->hash_mask];
+    s->head[h & s->hash_mask] = str;
+    s->prev[str & s->w_mask] = ret;
+    return ret;
+}
diff --git a/third_party/zlib/deflate.h b/third_party/zlib/deflate.h
index 2fe6fd6..d15f2b5 100644
--- a/third_party/zlib/deflate.h
+++ b/third_party/zlib/deflate.h
@@ -107,6 +107,8 @@
     Byte  method;        /* STORED (for zip only) or DEFLATED */
     int   last_flush;    /* value of flush param for previous deflate call */
 
+    unsigned zalign(16) crc0[4 * 5];
+
                 /* used by deflate.c: */
 
     uInt  w_size;        /* LZ77 window size (32K by default) */
@@ -344,4 +346,14 @@
               flush = _tr_tally(s, distance, length)
 #endif
 
+/* Functions that are SIMD optimised on x86 */
+void ZLIB_INTERNAL crc_fold_init(deflate_state* const s);
+void ZLIB_INTERNAL crc_fold_copy(deflate_state* const s,
+                                 unsigned char* dst,
+                                 const unsigned char* src,
+                                 long len);
+unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state* const s);
+
+void ZLIB_INTERNAL fill_window_sse(deflate_state* s);
+
 #endif /* DEFLATE_H */
diff --git a/third_party/zlib/fill_window_sse.c b/third_party/zlib/fill_window_sse.c
new file mode 100644
index 0000000..949ccce
--- /dev/null
+++ b/third_party/zlib/fill_window_sse.c
@@ -0,0 +1,175 @@
+/*
+ * Fill Window with SSE2-optimized hash shifting
+ *
+ * Copyright (C) 2013 Intel Corporation
+ * Authors:
+ *  Arjan van de Ven    <arjan@linux.intel.com>
+ *  Jim Kukunas         <james.t.kukunas@linux.intel.com>
+ *
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include <immintrin.h>
+#include "deflate.h"
+
+#define UPDATE_HASH(s,h,i) \
+    {\
+        if (s->level < 6) { \
+            h = (3483 * (s->window[i]) +\
+                 23081* (s->window[i+1]) +\
+                 6954 * (s->window[i+2]) +\
+                 20947* (s->window[i+3])) & s->hash_mask;\
+        } else {\
+            h = (25881* (s->window[i]) +\
+                 24674* (s->window[i+1]) +\
+                 25811* (s->window[i+2])) & s->hash_mask;\
+        }\
+    }\
+
+extern int read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
+
+void fill_window_sse(deflate_state *s)
+{
+    const __m128i xmm_wsize = _mm_set1_epi16(s->w_size);
+
+    register unsigned n;
+    register Posf *p;
+    unsigned more;    /* Amount of free space at the end of the window. */
+    uInt wsize = s->w_size;
+
+    Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+    do {
+        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
+
+        /* Deal with !@#$% 64K limit: */
+        if (sizeof(int) <= 2) {
+            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+                more = wsize;
+
+            } else if (more == (unsigned)(-1)) {
+                /* Very unlikely, but possible on 16 bit machine if
+                 * strstart == 0 && lookahead == 1 (input done a byte at time)
+                 */
+                more--;
+            }
+        }
+
+        /* If the window is almost full and there is insufficient lookahead,
+         * move the upper half to the lower one to make room in the upper half.
+         */
+        if (s->strstart >= wsize+MAX_DIST(s)) {
+
+            zmemcpy(s->window, s->window+wsize, (unsigned)wsize);
+            s->match_start -= wsize;
+            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
+            s->block_start -= (long) wsize;
+
+            /* Slide the hash table (could be avoided with 32 bit values
+               at the expense of memory usage). We slide even when level == 0
+               to keep the hash table consistent if we switch back to level > 0
+               later. (Using level 0 permanently is not an optimal usage of
+               zlib, so we don't care about this pathological case.)
+             */
+            n = s->hash_size;
+            p = &s->head[n];
+            p -= 8;
+            do {
+                __m128i value, result;
+
+                value = _mm_loadu_si128((__m128i *)p);
+                result = _mm_subs_epu16(value, xmm_wsize);
+                _mm_storeu_si128((__m128i *)p, result);
+
+                p -= 8;
+                n -= 8;
+            } while (n > 0);
+
+            n = wsize;
+#ifndef FASTEST
+            p = &s->prev[n];
+            p -= 8;
+            do {
+                __m128i value, result;
+
+                value = _mm_loadu_si128((__m128i *)p);
+                result = _mm_subs_epu16(value, xmm_wsize);
+                _mm_storeu_si128((__m128i *)p, result);
+
+                p -= 8;
+                n -= 8;
+            } while (n > 0);
+#endif
+            more += wsize;
+        }
+        if (s->strm->avail_in == 0) break;
+
+        /* If there was no sliding:
+         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+         *    more == window_size - lookahead - strstart
+         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+         * => more >= window_size - 2*WSIZE + 2
+         * In the BIG_MEM or MMAP case (not yet supported),
+         *   window_size == input_size + MIN_LOOKAHEAD  &&
+         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+         * Otherwise, window_size == 2*WSIZE so more >= 2.
+         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+         */
+        Assert(more >= 2, "more < 2");
+
+        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
+        s->lookahead += n;
+
+        /* Initialize the hash value now that we have some input: */
+        if (s->lookahead >= MIN_MATCH) {
+            uInt str = s->strstart;
+            s->ins_h = s->window[str];
+            if (str >= 1)
+                UPDATE_HASH(s, s->ins_h, str + 1 - (MIN_MATCH-1));
+#if MIN_MATCH != 3
+            Call UPDATE_HASH() MIN_MATCH-3 more times
+#endif
+        }
+        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+         * but this is not important since only literal bytes will be emitted.
+         */
+
+    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
+
+    /* If the WIN_INIT bytes after the end of the current data have never been
+     * written, then zero those bytes in order to avoid memory check reports of
+     * the use of uninitialized (or uninitialised as Julian writes) bytes by
+     * the longest match routines.  Update the high water mark for the next
+     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+     */
+    if (s->high_water < s->window_size) {
+        ulg curr = s->strstart + (ulg)(s->lookahead);
+        ulg init;
+
+        if (s->high_water < curr) {
+            /* Previous high water mark below current data -- zero WIN_INIT
+             * bytes or up to end of window, whichever is less.
+             */
+            init = s->window_size - curr;
+            if (init > WIN_INIT)
+                init = WIN_INIT;
+            zmemzero(s->window + curr, (unsigned)init);
+            s->high_water = curr + init;
+        }
+        else if (s->high_water < (ulg)curr + WIN_INIT) {
+            /* High water mark at or above current data, but below current data
+             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+             * to end of window, whichever is less.
+             */
+            init = (ulg)curr + WIN_INIT - s->high_water;
+            if (init > s->window_size - s->high_water)
+                init = s->window_size - s->high_water;
+            zmemzero(s->window + s->high_water, (unsigned)init);
+            s->high_water += init;
+        }
+    }
+
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "not enough room for search");
+}
diff --git a/third_party/zlib/simd_stub.c b/third_party/zlib/simd_stub.c
new file mode 100644
index 0000000..bb2ddc3
--- /dev/null
+++ b/third_party/zlib/simd_stub.c
@@ -0,0 +1,35 @@
+/* simd_stub.c -- stub implementations
+* Copyright (C) 2014 Intel Corporation
+* For conditions of distribution and use, see copyright notice in zlib.h
+*/
+#include <assert.h>
+
+#include "deflate.h"
+#include "x86.h"
+
+int x86_cpu_enable_simd;
+
+void ZLIB_INTERNAL crc_fold_init(deflate_state *const s) {
+    assert(0);
+}
+
+void ZLIB_INTERNAL crc_fold_copy(deflate_state *const s,
+                                 unsigned char *dst,
+                                 const unsigned char *src,
+                                 long len) {
+    assert(0);
+}
+
+unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state *const s) {
+    assert(0);
+    return 0;
+}
+
+void ZLIB_INTERNAL fill_window_sse(deflate_state *s)
+{
+    assert(0);
+}
+
+void x86_check_features(void)
+{
+}
diff --git a/third_party/zlib/x86.c b/third_party/zlib/x86.c
new file mode 100644
index 0000000..35ec516
--- /dev/null
+++ b/third_party/zlib/x86.c
@@ -0,0 +1,112 @@
+/*
+ * x86 feature check
+ *
+ * Copyright (C) 2013 Intel Corporation. All rights reserved.
+ * Author:
+ *  Jim Kukunas
+ * 
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "x86.h"
+
+int x86_cpu_enable_simd;
+
+#ifndef _MSC_VER
+#include <pthread.h>
+
+pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
+static void _x86_check_features(void);
+
+void x86_check_features(void)
+{
+  pthread_once(&cpu_check_inited_once, _x86_check_features);
+}
+
+static void _x86_check_features(void)
+{
+    int x86_cpu_has_sse2;
+    int x86_cpu_has_sse42;
+    int x86_cpu_has_pclmulqdq;
+    unsigned eax, ebx, ecx, edx;
+
+    eax = 1;
+#ifdef __i386__
+    __asm__ __volatile__ (
+        "xchg %%ebx, %1\n\t"
+        "cpuid\n\t"
+        "xchg %1, %%ebx\n\t"
+    : "+a" (eax), "=S" (ebx), "=c" (ecx), "=d" (edx)
+    );
+#else
+    __asm__ __volatile__ (
+        "cpuid\n\t"
+    : "+a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+    );
+#endif  /* (__i386__) */
+
+    x86_cpu_has_sse2 = edx & 0x4000000;
+    x86_cpu_has_sse42 = ecx & 0x100000;
+    x86_cpu_has_pclmulqdq = ecx & 0x2;
+
+    x86_cpu_enable_simd = x86_cpu_has_sse2 &&
+                          x86_cpu_has_sse42 &&
+                          x86_cpu_has_pclmulqdq;
+}
+#else
+#include <intrin.h>
+#include <windows.h>
+#include <stdint.h>
+
+static volatile int32_t once_control = 0;
+static void _x86_check_features(void);
+static int fake_pthread_once(volatile int32_t *once_control,
+                             void (*init_routine)(void));
+
+void x86_check_features(void)
+{
+    fake_pthread_once(&once_control, _x86_check_features);
+}
+
+/* Copied from "perftools_pthread_once" in tcmalloc */
+static int fake_pthread_once(volatile int32_t *once_control,
+                             void (*init_routine)(void)) {
+    // Try for a fast path first. Note: this should be an acquire semantics read
+    // It is on x86 and x64, where Windows runs.
+    if (*once_control != 1) {
+        while (1) {
+            switch (InterlockedCompareExchange(once_control, 2, 0)) {
+                case 0:
+                    init_routine();
+                    InterlockedExchange(once_control, 1);
+                    return 0;
+                case 1:
+                    // The initializer has already been executed
+                    return 0;
+                default:
+                    // The initializer is being processed by another thread
+                    SwitchToThread();
+            }
+        }
+    }
+    return 0;
+}
+
+static void _x86_check_features(void)
+{
+    int x86_cpu_has_sse2;
+    int x86_cpu_has_sse42;
+    int x86_cpu_has_pclmulqdq;
+    int regs[4];
+
+    __cpuid(regs, 1);
+
+    x86_cpu_has_sse2 = regs[3] & 0x4000000;
+    x86_cpu_has_sse42= regs[2] & 0x100000;
+    x86_cpu_has_pclmulqdq = regs[2] & 0x2;
+
+    x86_cpu_enable_simd = x86_cpu_has_sse2 &&
+                          x86_cpu_has_sse42 &&
+                          x86_cpu_has_pclmulqdq;
+}
+#endif  /* _MSC_VER */
diff --git a/third_party/zlib/x86.h b/third_party/zlib/x86.h
new file mode 100644
index 0000000..ac3d180
--- /dev/null
+++ b/third_party/zlib/x86.h
@@ -0,0 +1,13 @@
+/* x86.h -- check for x86 CPU features
+* Copyright (C) 2013 Intel Corporation Jim Kukunas
+* For conditions of distribution and use, see copyright notice in zlib.h
+*/
+
+#ifndef X86_H
+#define X86_H
+
+extern int x86_cpu_enable_simd;
+
+void x86_check_features(void);
+
+#endif  /* X86_H */
diff --git a/third_party/zlib/zlib.gyp b/third_party/zlib/zlib.gyp
index aef41ac..8c5ae44 100644
--- a/third_party/zlib/zlib.gyp
+++ b/third_party/zlib/zlib.gyp
@@ -5,6 +5,22 @@
 {
   'targets': [
     {
+      'target_name' : 'zlib_x86_simd',
+      'type': 'static_library',
+      'conditions': [
+        # See http://crbug.com/420616 gyp on mac & ios doesn't apply cflags
+        ['OS!="ios" and OS!="mac" and (target_arch=="ia32" or target_arch=="x64")', {
+          'cflags' : ["-msse2", "-msse4.2", "-mpclmul"],
+          'sources' : [ 'crc_folding.c',
+                        'fill_window_sse.c']
+        }, {
+          'sources' : [ 'simd_stub.c' ],
+        }], ['OS=="android"', {
+          'toolsets': ['target', 'host'],
+        }],
+      ],
+    },
+    {
       'target_name': 'zlib',
       'type': 'static_library',
       'sources': [
@@ -31,11 +47,15 @@
         'trees.c',
         'trees.h',
         'uncompr.c',
+        'x86.h',
         'zconf.h',
         'zlib.h',
         'zutil.c',
         'zutil.h',
       ],
+      'dependencies' : [
+        'zlib_x86_simd'
+      ],
       'include_dirs': [
         '.',
       ],
@@ -45,6 +65,9 @@
         ],
       },
       'conditions': [
+        ['OS!="ios" and OS!="mac" and (target_arch=="ia32" or target_arch=="x64")', {
+          'sources' : [ 'x86.c', ],
+        }],
         ['OS!="win"', {
           'product_name': 'chrome_zlib',
         }], ['OS=="android"', {
diff --git a/third_party/zlib/zutil.h b/third_party/zlib/zutil.h
index 39cf373..3c8326f 100644
--- a/third_party/zlib/zutil.h
+++ b/third_party/zlib/zutil.h
@@ -142,6 +142,12 @@
 #  define OS_CODE  0x0a
 #endif
 
+#ifdef _MSC_VER
+#define zalign(x) __declspec(align(x))
+#else
+#define zalign(x) __attribute__((aligned((x))))
+#endif
+
 #ifdef WIN32
 #  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
 #    define OS_CODE  0x0b
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index c3aa36a..5ee7c30 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -22,7 +22,7 @@
 # in bringup. Use a pinned revision to make it slightly more stable.
 if (re.search(r'\b(asan)=1', os.environ.get('GYP_DEFINES', '')) and
     not 'LLVM_FORCE_HEAD_REVISION' in os.environ):
-  LLVM_WIN_REVISION = '220557'
+  LLVM_WIN_REVISION = '217738'
 
 # Path constants. (All of these should be absolute paths.)
 THIS_DIR = os.path.abspath(os.path.dirname(__file__))
diff --git a/tools/gritsettings/resource_ids b/tools/gritsettings/resource_ids
index a1fce5c..4681b25 100644
--- a/tools/gritsettings/resource_ids
+++ b/tools/gritsettings/resource_ids
@@ -236,6 +236,7 @@
   "android_webview/java/strings/android_webview_strings.grd": {},
   "chrome/android/java/strings/android_chrome_strings.grd": {},
   "content/public/android/java/strings/android_content_strings.grd": {},
+  "ui/accessibility/extensions/strings/accessibility_extensions_strings.grd": {},
   "ui/android/java/strings/android_ui_strings.grd": {},
 
   # Resource ids starting at 31000 are reserved for projects built on Chromium.
diff --git a/tools/msan/blacklist.txt b/tools/msan/blacklist.txt
index 96f5487..07b31c1 100644
--- a/tools/msan/blacklist.txt
+++ b/tools/msan/blacklist.txt
@@ -10,6 +10,9 @@
 # Uninit in zlib. http://crbug.com/116277
 fun:*MOZ_Z_deflate*
 
+# Uninit in zlib with SIMD intrinsic http://crbug.com/426868
+fun:crc_fold512_to_32
+
 # Uninit in OSMesa. http://crbug.com/347967
 fun:unpack_RGBA8888
 fun:unpack_RGB888
diff --git a/tools/valgrind/chrome_tests.py b/tools/valgrind/chrome_tests.py
index e4f62a5..8735e0d 100755
--- a/tools/valgrind/chrome_tests.py
+++ b/tools/valgrind/chrome_tests.py
@@ -148,6 +148,8 @@
       cmd.append("--gtest_repeat=%s" % self._options.gtest_repeat)
     if self._options.gtest_shuffle:
       cmd.append("--gtest_shuffle")
+    if self._options.gtest_break_on_failure:
+      cmd.append("--gtest_break_on_failure")
     if self._options.brave_new_test_launcher:
       cmd.append("--brave-new-test-launcher")
     if self._options.test_launcher_bot_mode:
@@ -737,6 +739,12 @@
   parser.add_option("--gtest_repeat", help="argument for --gtest_repeat")
   parser.add_option("--gtest_shuffle", action="store_true", default=False,
                     help="Randomize tests' orders on every iteration.")
+  parser.add_option("--gtest_break_on_failure", action="store_true",
+                    default=False,
+                    help="Drop in to debugger on assertion failure. Also "
+                         "useful for forcing tests to exit with a stack dump "
+                         "on the first assertion failure when running with "
+                         "--gtest_repeat=-1")
   parser.add_option("-v", "--verbose", action="store_true", default=False,
                     help="verbose output - enable debug log messages")
   parser.add_option("--tool", dest="valgrind_tool", default="memcheck",
diff --git a/tools/valgrind/gtest_exclude/cc_unittests.gtest-drmemory_win32.txt b/tools/valgrind/gtest_exclude/cc_unittests.gtest-drmemory_win32.txt
index 777e3b5..bdc0e84 100644
--- a/tools/valgrind/gtest_exclude/cc_unittests.gtest-drmemory_win32.txt
+++ b/tools/valgrind/gtest_exclude/cc_unittests.gtest-drmemory_win32.txt
@@ -10,3 +10,19 @@
 # http://crbug.com/416643
 LayerTreeHostCopyRequestTestMultipleRequests.GLRenderer_RunSingleThread
 LayerTreeHostCopyRequestTestMultipleRequests.SoftwareRenderer_RunSingleThread
+
+# http://crbug.com/430400
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfLayer/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfLayer/6
+PixelResourceTest/LayerTreeHostMasksPixelTest.ImageMaskOfLayer/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.ImageMaskOfLayer/6
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfClippedLayer/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfClippedLayer/6
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskWithReplica/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskWithReplica/6
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskWithReplicaOfClippedLayer/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskWithReplicaOfClippedLayer/6
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfReplica/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfReplica/6
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfReplicaOfClippedLayer/5
+PixelResourceTest/LayerTreeHostMasksPixelTest.MaskOfReplicaOfClippedLayer/6
diff --git a/tools/valgrind/gtest_exclude/content_unittests.gtest.txt b/tools/valgrind/gtest_exclude/content_unittests.gtest.txt
index 54bc307..3376b22 100644
--- a/tools/valgrind/gtest_exclude/content_unittests.gtest.txt
+++ b/tools/valgrind/gtest_exclude/content_unittests.gtest.txt
@@ -7,3 +7,6 @@
 
 # http://crbug.com/418258
 DevToolsManagerTest.TestObserver
+
+# http://crbug.com/430391
+WebDataConsumerHandleImplTest.*
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 7a2caf4..abf7e02 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -569,10 +569,15 @@
   RecomputeDrawsContentAndUVRect();
 }
 
-void Layer::SetShowSurface(cc::SurfaceId id, gfx::Size frame_size_in_dip) {
+void Layer::SetShowSurface(
+    cc::SurfaceId id,
+    const cc::SurfaceLayer::SatisfyCallback& satisfy_callback,
+    const cc::SurfaceLayer::RequireCallback& require_callback,
+    gfx::Size frame_size_in_dip) {
   DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR);
 
-  scoped_refptr<cc::SurfaceLayer> new_layer = cc::SurfaceLayer::Create();
+  scoped_refptr<cc::SurfaceLayer> new_layer =
+      cc::SurfaceLayer::Create(satisfy_callback, require_callback);
   new_layer->SetSurfaceId(id);
   SwitchToLayer(new_layer);
   surface_layer_ = new_layer;
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h
index 16a2578..74781d1 100644
--- a/ui/compositor/layer.h
+++ b/ui/compositor/layer.h
@@ -17,6 +17,7 @@
 #include "cc/base/scoped_ptr_vector.h"
 #include "cc/layers/content_layer_client.h"
 #include "cc/layers/layer_client.h"
+#include "cc/layers/surface_layer.h"
 #include "cc/layers/texture_layer_client.h"
 #include "cc/resources/texture_mailbox.h"
 #include "cc/surfaces/surface_id.h"
@@ -275,7 +276,10 @@
                                gfx::Size frame_size_in_dip);
 
   // Begins showing content from a surface with a particular id.
-  void SetShowSurface(cc::SurfaceId id, gfx::Size frame_size_in_dip);
+  void SetShowSurface(cc::SurfaceId id,
+                      const cc::SurfaceLayer::SatisfyCallback& satisfy_callback,
+                      const cc::SurfaceLayer::RequireCallback& require_callback,
+                      gfx::Size frame_size_in_dip);
 
   bool has_external_content() {
     return texture_layer_.get() || delegated_renderer_layer_.get() ||
diff --git a/ui/gl/gl_context_egl.cc b/ui/gl/gl_context_egl.cc
index 733ad8d..41c10dc 100644
--- a/ui/gl/gl_context_egl.cc
+++ b/ui/gl/gl_context_egl.cc
@@ -183,6 +183,8 @@
   if (!eglSwapInterval(display_, interval)) {
     LOG(ERROR) << "eglSwapInterval failed with error "
                << GetLastEGLErrorString();
+  } else {
+    GLSurface::GetCurrent()->SetSwapInterval(interval);
   }
 }
 
diff --git a/ui/gl/gl_fence_arb.cc b/ui/gl/gl_fence_arb.cc
index da13f10..05bda6b 100644
--- a/ui/gl/gl_fence_arb.cc
+++ b/ui/gl/gl_fence_arb.cc
@@ -4,11 +4,26 @@
 
 #include "ui/gl/gl_fence_arb.h"
 
+#include "base/strings/stringprintf.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 
 namespace gfx {
 
+namespace {
+
+std::string GetGLErrors() {
+  // Clears and logs all current gl errors.
+  std::string accumulated_errors;
+  GLenum error;
+  while ((error = glGetError()) != GL_NO_ERROR) {
+    accumulated_errors += base::StringPrintf("0x%x ", error);
+  }
+  return accumulated_errors;
+}
+
+}  // namespace
+
 GLFenceARB::GLFenceARB(bool flush) {
   sync_ = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
   DCHECK_EQ(GL_TRUE, glIsSync(sync_));
@@ -28,13 +43,22 @@
   // We could potentially use glGetSynciv here, but it doesn't work
   // on OSX 10.7 (always says the fence is not signaled yet).
   // glClientWaitSync works better, so let's use that instead.
-  return glClientWaitSync(sync_, 0, 0) != GL_TIMEOUT_EXPIRED;
+  GLenum result = glClientWaitSync(sync_, 0, 0);
+  if (result == GL_WAIT_FAILED) {
+    LOG(FATAL) << "Failed to wait for GLFence. error code:" << GetGLErrors();
+  }
+  return result != GL_TIMEOUT_EXPIRED;
 }
 
 void GLFenceARB::ClientWait() {
   DCHECK_EQ(GL_TRUE, glIsSync(sync_));
   if (!flush_event_.get() || flush_event_->IsSignaled()) {
-    glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED);
+    GLenum result =
+        glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED);
+    DCHECK_NE(static_cast<GLenum>(GL_TIMEOUT_EXPIRED), result);
+    if (result == GL_WAIT_FAILED) {
+      LOG(FATAL) << "Failed to wait for GLFence. error code:" << GetGLErrors();
+    }
   } else {
     LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
   }
diff --git a/ui/gl/gl_fence_egl.cc b/ui/gl/gl_fence_egl.cc
index 2ff18fc..c96d6d8 100644
--- a/ui/gl/gl_fence_egl.cc
+++ b/ui/gl/gl_fence_egl.cc
@@ -4,6 +4,7 @@
 
 #include "ui/gl/gl_fence_egl.h"
 
+#include "ui/gl/egl_util.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 
@@ -24,6 +25,8 @@
   EGLint value = 0;
   if (eglGetSyncAttribKHR(display_, sync_, EGL_SYNC_STATUS_KHR, &value) !=
       EGL_TRUE) {
+    LOG(ERROR) << "Failed to get EGLSync attribute. error code:"
+               << eglGetError();
     return true;
   }
 
@@ -35,7 +38,12 @@
   if (!flush_event_.get() || flush_event_->IsSignaled()) {
     EGLint flags = 0;
     EGLTimeKHR time = EGL_FOREVER_KHR;
-    eglClientWaitSyncKHR(display_, sync_, flags, time);
+    EGLint result = eglClientWaitSyncKHR(display_, sync_, flags, time);
+    DCHECK_NE(EGL_TIMEOUT_EXPIRED_KHR, result);
+    if (result == EGL_FALSE) {
+      LOG(FATAL) << "Failed to wait for EGLSync. error:"
+                 << ui::GetLastEGLErrorString();
+    }
   } else {
     LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
   }
@@ -48,7 +56,10 @@
   }
   if (!flush_event_.get() || flush_event_->IsSignaled()) {
     EGLint flags = 0;
-    eglWaitSyncKHR(display_, sync_, flags);
+    if (eglWaitSyncKHR(display_, sync_, flags) == EGL_FALSE) {
+      LOG(FATAL) << "Failed to wait for EGLSync. error:"
+                 << ui::GetLastEGLErrorString();
+    }
   } else {
     LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
   }
diff --git a/ui/gl/gl_implementation_android.cc b/ui/gl/gl_implementation_android.cc
index 77dcb90..1486a6d 100644
--- a/ui/gl/gl_implementation_android.cc
+++ b/ui/gl/gl_implementation_android.cc
@@ -7,7 +7,6 @@
 #include "base/files/file_path.h"
 #include "base/logging.h"
 #include "base/native_library.h"
-#include "base/path_service.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context_stub_with_extensions.h"
 #include "ui/gl/gl_egl_api_implementation.h"
diff --git a/ui/gl/gl_surface.cc b/ui/gl/gl_surface.cc
index 4459d48..a818a60 100644
--- a/ui/gl/gl_surface.cc
+++ b/ui/gl/gl_surface.cc
@@ -266,6 +266,9 @@
   return extensions.find(delimited_name) != std::string::npos;
 }
 
+void GLSurface::SetSwapInterval(int interval) {
+}
+
 GLSurfaceAdapter::GLSurfaceAdapter(GLSurface* surface) : surface_(surface) {}
 
 bool GLSurfaceAdapter::Initialize() {
diff --git a/ui/gl/gl_surface.h b/ui/gl/gl_surface.h
index d458063..0a7607f 100644
--- a/ui/gl/gl_surface.h
+++ b/ui/gl/gl_surface.h
@@ -134,6 +134,8 @@
 
   static GLSurface* GetCurrent();
 
+  virtual void SetSwapInterval(int interval);
+
  protected:
   virtual ~GLSurface();
   static bool InitializeOneOffImplementation(GLImplementation impl,
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index 8c08ff4..c34ca0e 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -54,6 +54,8 @@
 
 namespace gfx {
 
+unsigned int NativeViewGLSurfaceEGL::current_swap_generation_ = 0;
+
 namespace {
 
 EGLConfig g_config;
@@ -286,7 +288,9 @@
       surface_(NULL),
       supports_post_sub_buffer_(false),
       config_(NULL),
-      size_(1, 1) {
+      size_(1, 1),
+      swap_interval_(1),
+      swap_generation_(0) {
 #if defined(OS_ANDROID)
   if (window)
     ANativeWindow_acquire(window);
@@ -450,12 +454,37 @@
       "width", GetSize().width(),
       "height", GetSize().height());
 
+#if defined(OS_WIN)
+  bool force_no_vsync = false;
+  if (swap_interval_ != 0) {
+    // This code is a simple way of enforcing that only one surface actually
+    // vsyncs per frame. This provides single window cases a stable refresh
+    // while allowing multi-window cases to not slow down due to multiple syncs
+    // on a single thread. A better way to fix this problem would be to have
+    // each surface present on its own thread.
+    if (current_swap_generation_ == swap_generation_) {
+      current_swap_generation_++;
+    } else {
+      force_no_vsync = true;
+      eglSwapInterval(GetDisplay(), 0);
+    }
+
+    swap_generation_ = current_swap_generation_;
+  }
+#endif
+
   if (!eglSwapBuffers(GetDisplay(), surface_)) {
     DVLOG(1) << "eglSwapBuffers failed with error "
              << GetLastEGLErrorString();
     return false;
   }
 
+#if defined(OS_WIN)
+  if (force_no_vsync) {
+    eglSwapInterval(GetDisplay(), swap_interval_);
+  }
+#endif
+
   return true;
 }
 
@@ -530,6 +559,10 @@
   return vsync_provider_.get();
 }
 
+void NativeViewGLSurfaceEGL::SetSwapInterval(int interval) {
+  swap_interval_ = interval;
+}
+
 NativeViewGLSurfaceEGL::~NativeViewGLSurfaceEGL() {
   Destroy();
 #if defined(OS_ANDROID)
diff --git a/ui/gl/gl_surface_egl.h b/ui/gl/gl_surface_egl.h
index 952ccad..b832ef6 100644
--- a/ui/gl/gl_surface_egl.h
+++ b/ui/gl/gl_surface_egl.h
@@ -82,6 +82,8 @@
 
   EGLNativeWindowType window_;
 
+  virtual void SetSwapInterval(int interval) override;
+
  private:
   EGLSurface surface_;
   bool supports_post_sub_buffer_;
@@ -90,6 +92,10 @@
 
   scoped_ptr<VSyncProvider> vsync_provider_;
 
+  int swap_interval_;
+  unsigned int swap_generation_;
+  static unsigned int current_swap_generation_;
+
   DISALLOW_COPY_AND_ASSIGN(NativeViewGLSurfaceEGL);
 };