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_, ¤t_frame_->metadata.satisfies_sequences);
+ SurfaceIdAllocator::NamespaceForId(surface_id_),
+ ¤t_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);
};